zoukankan      html  css  js  c++  java
  • 点滴积累【C#】---使用log4net组件记录错误日志(以文本形式记录)

    效果:

    描述:

    利用log4net组件进行错误日志的记录,log4net记录错误的方式我所了解的有4种,No.1 文本形式记录日志,No.2存储到数据库形式记录日志,No.3控制台控制显示日志,No.4Windows事件日志。本文所采用的是第一种形式------文本形式记录日志。

    首先,引用log4net.dll文件,然后创建一个config文件,进行配置日志的相关信息,比如:配置路径,以及错误的显示形式等。然后创建一个Global.asax应用程序文件,用于第一次访问时执行配置文件。然后创建一个类,进行错误日志的整理,然后调用这个类进行写入日志。

    代码:

    配置文件(log.config)

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
      </configSections>
      <log4net>
        <root>
          <level value="ALL" />
          <!--文件形式记录日志-->
          <appender-ref ref="RollingLogFileAppender" />
        </root>
        <!--输出到文件中-->
        <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
          <!--保存路径-->
          <file value="log\Log-" />
          <!--是否续写-->
          <appendToFile value="true" />
          <!--按照文件的大小进行变换日志文件-->
          <rollingStyle value="Date" />
          <!--保留的log文件数量 超过此数量后 自动删除之前的   好像只有在 按Size分割时有效-->
          <param name="MaxSizeRollBackups" value="100"/>
          <param name="StaticLogFileName" value="false"/>
          <param name="DatePattern" value="yyyy-MM-dd&quot;.log&quot;"/>
          <encoding value="utf-8" />
          <!--最小锁定模型以允许多个进程可以写入同一个文件-->
          <lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" />
          <!--
          <maxSizeRollBackups value="10" />
          <maximumFileSize value="1MB" />
          -->
          <layout type="log4net.Layout.PatternLayout">
            <param name="conversionPattern" value="时间:%d%n线程:[%t]%n类型:%-5p%n标题:%c%n内容:%m%n——————————%n" />
            <param name="Header" value="&#13;&#10;----------------------header--------------------------&#13;&#10;&#13;&#10;" />
            <param name="Footer" value="&#13;&#10;----------------------footer--------------------------&#13;&#10;" />
          </layout>
        </appender>
      </log4net>
    </configuration>

    应用程序(Global.asax)

    protected void Application_Start(object sender, EventArgs e)
            {
                log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(Server.MapPath("~") + @"log.config"));
            }

    处理日志(logHelper.cs)

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    namespace log4net_Write
    {
        public class logHelper
        {
            /// <summary>
            /// 生成日志信息——Fatal(致命错误)
            /// </summary>
            /// <param name="message">日志内容</param>
            public static void Fatal(string message)
            {
                log4net.ILog log = log4net.LogManager.GetLogger("Fatal");
                if (log.IsFatalEnabled)
                {
                    log.Fatal(message);
                }
                log = null;
            }
    
            /// <summary>
            /// 生成日志信息——Fatal(致命错误)
            /// </summary>
            /// <param name="name">名称</param>
            /// <param name="message">日志内容</param>
            public static void Fatal(string name, string message)
            {
                log4net.ILog log = log4net.LogManager.GetLogger(name);
                if (log.IsFatalEnabled)
                {
                    log.Fatal(message);
                }
                log = null;
            }
    
    
            /// <summary>
            /// 生成日志信息——Error(一般错误)
            /// </summary>
            /// <param name="message">日志内容</param>
            public static void Error(string message)
            {
                log4net.ILog log = log4net.LogManager.GetLogger("Error");
                if (log.IsErrorEnabled)
                {
                    log.Error(message);
                }
                log = null;
            }
    
            /// <summary>
            /// 生成日志信息——Error(一般错误)
            /// </summary>
            /// <param name="name">名称</param>
            /// <param name="message">日志内容</param>
            public static void Error(string name, string message)
            {
                log4net.ILog log = log4net.LogManager.GetLogger(name);
                if (log.IsErrorEnabled)
                {
                    log.Error(message);
                }
                log = null;
            }
    
            /// <summary>
            /// 生成日志信息——Warn(警告)
            /// </summary>
            /// <param name="message">日志内容</param>
            public static void Warn(string message)
            {
                log4net.ILog log = log4net.LogManager.GetLogger("Warn");
                if (log.IsWarnEnabled)
                {
                    log.Warn(message);
                }
                log = null;
            }
    
            /// <summary>
            /// 生成日志信息——Warn(警告)
            /// </summary>
            /// <param name="name">名称</param>
            /// <param name="message">日志内容</param>
            public static void Warn(string name, string message)
            {
                log4net.ILog log = log4net.LogManager.GetLogger(name);
                if (log.IsWarnEnabled)
                {
                    log.Warn(message);
                }
                log = null;
            }
    
            /// <summary>
            /// 生成日志信息——Info(一般信息)
            /// </summary>
            /// <param name="message">日志内容</param>
            public static void Info(string message)
            {
                log4net.ILog log = log4net.LogManager.GetLogger("Info");
                if (log.IsInfoEnabled)
                {
                    log.Info(message);
                }
                log = null;
            }
    
            /// <summary>
            /// 生成日志信息——Info(一般信息)
            /// </summary>
            /// <param name="name">名称</param>
            /// <param name="message">日志内容</param>
            public static void Info(string name, string message)
            {
                log4net.ILog log = log4net.LogManager.GetLogger(name);
                if (log.IsInfoEnabled)
                {
                    log.Info(message);
                }
                log = null;
            }
    
            /// <summary>
            /// 生成日志信息——Debug(调试信息)
            /// </summary>
            /// <param name="message">日志内容</param>
            public static void Debug(string message)
            {
                log4net.ILog log = log4net.LogManager.GetLogger("Debug");
                if (log.IsDebugEnabled)
                {
                    log.Debug(message);
                }
                log = null;
            }
    
            /// <summary>
            /// 生成日志信息——Debug(调试信息)
            /// </summary>
            /// <param name="name">名称</param>
            /// <param name="message">日志内容</param>
            public static void Debug(string name, string message)
            {
                log4net.ILog log = log4net.LogManager.GetLogger(name);
                if (log.IsDebugEnabled)
                {
                    log.Debug(message);
                }
                log = null;
            }
        }
    }

    调用

       protected void btn_Click(object sender, EventArgs e)
            {
                try
                {
                    int intStr = Convert.ToInt32(tb.Text);
                    tb2.Text = "转换成功:" + intStr.ToString();
                }
                catch (Exception ex)
                {
                    //logHelper.Error(ex.ToString());
                    //logHelper.Debug(ex.ToString());
                    //logHelper.Fatal(ex.ToString());
                    //logHelper.Info(ex.ToString());
                    logHelper.Warn("warn名称", ex.ToString());
                }
            }

     Demo下载:

     http://files.cnblogs.com/files/xinchun/GetLog2.zip

  • 相关阅读:
    我所理解的三次握手
    网络舆情——初步了解
    【转载】位运算的密码
    【转载】基础排序算法简介
    【原创】关于hashcode和equals的不同实现对HashMap和HashSet集合类的影响的探究
    【原创】Java移位运算
    【原创】MapReduce计数器
    【原创】Hadoop机架感知对性能调优的理解
    【原创】一个复制本地文件到Hadoop文件系统的实例
    【转载】JAVA IO 流的总结
  • 原文地址:https://www.cnblogs.com/xinchun/p/4374511.html
Copyright © 2011-2022 走看看