美文网首页
C# 优秀的开源日志记录组件--Log4Net 随笔(待续...

C# 优秀的开源日志记录组件--Log4Net 随笔(待续...

作者: 有种境界叫loser | 来源:发表于2019-05-16 17:47 被阅读0次

    概述

    一个功能著名的开源日志记录组件,各语言都有相应实现版本。C#下的log4Net,Java下的log4j,C的log4c,C++的log4cxx,QT的log4QT。不过还是Log4j和Log4Net比较常用。这里针对Log4Net做介绍。
    该日志系统官网: https://logging.apache.org/

    Log4Net 简单的引用实例

    第一步:在项目中添加对log4net.dll的引用
    1.直接lib引用: https://logging.apache.org/log4net/download_log4net.cgi;
    2.VS NuGet引入log4net(推荐)。

    第二步:程序启动时读取log4net的配置文件。

    a) CS程序,在根目录的Program.cs中的Main方法中添加:

    log4net.Config.XmlConfigurator.Configure();
    

    b) Web程序,在根目录的Global.asax.cs(没有新建一个)中的Application_Start方法中添加:

    log4net.Config.XmlConfigurator.Configure();
    

    c) 无论BS还是CS程序都可直接在项目的AssemblyInfo.cs文件里添加以下的语句:

    [assembly: log4net.Config .XmlConfigurator()]
    
    //自定义配置文件 ConfigFile :配置名;Watch:监听
    [assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4net.config", Watch = true)])
    

    d)无论BS还是CS程序都可直接在项目的配置文件 web.config/app.config 配置:

       <configSections><!--节点里添加:-->
               <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
        <configSections>
           
       <appSettings><!--节点里添加:-->
           <!--log4net配置文件-->
           <add key="log4net.Config" value="Log4net.config"/>
           <!--是否启用log4net监听-->
           <add key="log4net.Config.Watch" value="True"/> 
       </appSettings>
    

    配置简要说明:

    首先是声明配置

    四个不同的log配置,可对应四个不同的log级别

      <appender-ref ref="InfoLog" />
    
      <appender-ref ref="WarnLog" />
    
      <appender-ref ref="ErrorLog" />
    
      <appender-ref ref="DebugLog" />
    

    这里的ref的值对应下方<appender>节点的name,<appender>节点里面就是详细配置

    appender主要注意配置的有:

    1.路径:

    <param name="File" value="Logs\\Info\\" />
    

    2.log文件名:

     <param name="DatePattern" value="yyyyMMdd'_Info.log'" />
    

    3.log内容 && 输出内容格式 :

    内容
         <param name="ConversionPattern" value="%n日志时间:%d [%t] %n日志级别:%-5p %n日 志 类:%c [%L] %n%m %n" /> 
      
    输出内容格式 
        %m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息
        %n(new line):换行
        %d(datetime):输出当前语句运行的时刻
        %r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数
        %t(thread id):当前语句所在的线程ID
        %p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等
        %c(class):当前日志对象的名称,例如:
        -模式字符串为:%-10c -%m%n
        -代码为:
            ILog log=LogManager.GetLogger(“Exam.Log”);
            log.Debug(“Hello”);
        -则输出为下面的形式:
            Exam.Log       - Hello
            %L:输出语句所在的行号
            %F:输出语句所在的文件名
            %-数字:表示该项的最小长度,如果不够,则用空格填充
    

    4、 对应的级别: 区间(LevelRangeFilter)、单级别(晚点补):

      <filter type="log4net.Filter.LevelRangeFilter">
    
        <levelMin value="INFO" />
    
        <levelMax value="INFO" />
    
      </filter>
    

    完整的配置文件代码如下:

    <configuration>
    
      <configSections>
    
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
    
      </configSections>
    
      <log4net>
    
        <root>
    
          <level value="ALL"/>
    
          <!--根据log级别记录到不同的日志文件-->
    
          <appender-ref ref="InfoLog" />
    
          <appender-ref ref="WarnLog" />
    
          <appender-ref ref="ErrorLog" />
    
          <appender-ref ref="DebugLog" />
    
        </root>
    
        <!--Info日志配置-->
    
        <appender name="InfoLog" type="log4net.Appender.RollingFileAppender">
    
          <!--Info保存路径-->
    
          <param name="File" value="Logs\\Info\\" />
    
          <param name="AppendToFile" value="true" />
    
          <param name="MaxFileSize" value="10240" />
    
          <param name="MaxSizeRollBackups" value="100" />
    
          <param name="StaticLogFileName" value="false" />
    
          <!--Info日志名-->
    
          <param name="DatePattern" value="yyyyMMdd'_Info.log'" />
    
          <param name="RollingStyle" value="Date" />
    
          <layout type="log4net.Layout.PatternLayout">
    
            <!--Log内容-->
    
            <param name="ConversionPattern" value="%n日志时间:%d [%t] %n日志级别:%-5p %n日 志 类:%c [%L] %n%m %n" />
    
          </layout>
    
          <!--本文件记录日志 级别区间-->
    
          <filter type="log4net.Filter.LevelRangeFilter">
    
            <levelMin value="INFO" />
    
            <levelMax value="INFO" />
    
          </filter>
    
        </appender>
    
        <!--Warn日志配置-->
    
        <appender name="WarnLog" type="log4net.Appender.RollingFileAppender">
    
          <!--Warn保存路径-->
    
          <param name="File" value="Logs\\Warn\\" />
    
          <param name="AppendToFile" value="true" />
    
          <param name="MaxFileSize" value="10240" />
    
          <param name="MaxSizeRollBackups" value="100" />
    
          <param name="StaticLogFileName" value="false" />
    
          <!--Warn日志名-->
    
          <param name="DatePattern" value="yyyyMMdd_Warn'.log'" />
    
          <param name="RollingStyle" value="Date" />
    
          <layout type="log4net.Layout.PatternLayout">
    
            <!--Log内容-->
    
            <param name="ConversionPattern" value="%n日志时间:%d [%t] %n日志级别:%-5p %n日 志 类:%c [%L] %n%m %n" />
    
          </layout>
    
          <!--本文件记录日志 级别区间-->
    
          <filter type="log4net.Filter.LevelRangeFilter">
    
            <levelMin value="WARN" />
    
            <levelMax value="WARN" />
    
          </filter>
    
        </appender>
    
        <!--Error日志配置-->
    
        <appender name="ErrorLog" type="log4net.Appender.RollingFileAppender">
    
          <!--Error保存路径-->
    
          <param name="File" value="Logs\\Error\\" />
    
          <param name="AppendToFile" value="true" />
    
          <param name="MaxFileSize" value="10240" />
    
          <param name="MaxSizeRollBackups" value="100" />
    
          <param name="StaticLogFileName" value="false" />
    
          <!--Error日志名-->
    
          <param name="DatePattern" value="yyyyMMdd_Error'.log'" />
    
          <param name="RollingStyle" value="Date" />
    
          <layout type="log4net.Layout.PatternLayout">
    
            <!--Log内容-->
    
            <param name="ConversionPattern" value="%n日志时间:%d [%t] %n日志级别:%-5p %n日 志 类:%c [%L] %n%m %n" />
    
          </layout>
    
          <!--本文件记录日志 级别区间-->
    
          <filter type="log4net.Filter.LevelRangeFilter">
    
            <levelMin value="ERROR" />
    
            <levelMax value="ERROR" />
    
          </filter>
    
        </appender>
    
        <!--Debug日志配置-->
    
        <appender name="DebugLog" type="log4net.Appender.RollingFileAppender">
    
          <!--Debug保存路径-->
    
          <param name="File" value="Logs\\Debug\\" />
    
          <param name="AppendToFile" value="true" />
    
          <param name="MaxFileSize" value="10240" />
    
          <param name="MaxSizeRollBackups" value="100" />
    
          <param name="StaticLogFileName" value="false" />
    
          <!--Debug日志名-->
    
          <param name="DatePattern" value="yyyyMMdd'_Debug.log'" />
    
          <param name="RollingStyle" value="Date" />
    
          <layout type="log4net.Layout.PatternLayout">
    
            <!--Log内容-->
    
            <param name="ConversionPattern" value="%n日志时间:%d [%t] %n日志级别:%-5p %n日 志 类:%c [%L] %n%m %n" />
    
          </layout>
    
          <!--本文件记录日志 级别区间-->
    
          <filter type="log4net.Filter.LevelRangeFilter">
    
            <levelMin value="DEBUG" />
    
            <levelMax value="DEBUG" />
    
          </filter>
    
        </appender>
    
      </log4net>
    
    </configuration>
    

    相关文章

      网友评论

          本文标题:C# 优秀的开源日志记录组件--Log4Net 随笔(待续...

          本文链接:https://www.haomeiwen.com/subject/gccwaqtx.html