• log4net使用


    App.Config配置:

    记录到项目根目录log文件夹,同一个文件中:

     1 <?xml version="1.0" encoding="utf-8" ?>
     2 <configuration>
     3   <configSections>
     4     <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
     5   </configSections>
     6   <appSettings>
     7     <!-- To enable internal log4net logging specify the   
     8              following appSettings key -->
     9     <add key="log4net.Internal.Debug" value="true"/>
    10   </appSettings>
    11   <log4net>
    12     <!--定义输出到文件中-->
    13     <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
    14       <!--每条日志末尾的文字说明-->
    15       <!--<footer value="by Eason" />-->
    16       <!--定义文件存放位置-->
    17       <file value="log\LogFileAppender_log.txt" />
    18       <appendToFile value="true" />
    19       <datePattern value="yyyyMMdd-HH:mm:ss" />
    20       <layout type="log4net.Layout.PatternLayout">
    21         <!--每条日志末尾的文字说明-->
    22         <footer value="by EasonDongH" />
    23         <!--输出格式-->      
    24         <conversionPattern value="记录时间:%date %n日志级别:%-5level %n线程ID:[%thread] 所在类:%logger property:[%property{NDC}] %n描述:%message%newline %n" />
    25       </layout>
    26     </appender> 
    27     <!--定义日志的输出媒介-->
    28     <root>
    29       <!--文件形式记录日志-->
    30       <appender-ref ref="LogFileAppender" />      
    31     </root>
    32   </log4net>
    33 </configuration>
    View Code

    记录格式效果:

    记录到项目根目录log\yyyyMMdd文件夹,按“yyyyMMddHHmm”动态命名文件中:

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <configuration>
     3   <configSections>
     4     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
     5   </configSections>
     6   <log4net>
     7     <!--定义输出到文件中-->
     8     <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
     9       <!--定义文件存放位置-->
    10       <file value="log\"/>
    11       <appendToFile value="true"/>
    12       <rollingStyle value="Date"/>
    13       <datePattern value="yyyyMMdd\yyyyMMddHHmm'.txt'"/>
    14       <staticLogFileName value="false"/>
    15       <param name="MaxSizeRollBackups" value="100"/>
    16       <layout type="log4net.Layout.PatternLayout">
    17         <!--每条日志末尾的文字说明-->
    18         <footer value="by EasonDongH" />
    19         <!--输出格式-->        
    20         <!--<conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}] - 错误描述:%message%newline" />-->
    21         <conversionPattern value="记录时间:%date %n线程ID:[%thread] %n日志级别:%-5level %n出错类:%logger property: [%property{NDC}]  %n错误描述:%message%newline %newline"/>
    22       </layout>
    23     </appender>
    24     <root>
    25       <!--<level value="ERROR"/>-->
    26       <!--文件形式记录日志-->
    27       <appender-ref ref="RollingLogFileAppender"/>
    28     </root>
    29   </log4net>
    30 </configuration>
    View Code

    记录格式效果:

    两种记录方式都有一个换行问题,如果只是记录string值,可以直接使用,若是要记录exception,可以将下面代码替换,带来的问题是文档最开始就会出现一次换行:

    <conversionPattern value="%newline记录时间:%date %n线程ID:[%thread] %n日志级别:%-5level %n出错类:%logger property: [%property{NDC}]  %n错误描述:%message%newline "/>

    暂未有好的解决方案。

    控制日志的数量以及每个日志的大小,超过大小就新建日志,超过规定的日志数量就从日志1开始覆盖: 

     1 <?xml version="1.0" encoding="utf-8" ?>
     2 <configuration>
     3   <configSections>
     4     <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
     5   </configSections>
     6   <appSettings>
     7     <!-- To enable internal log4net logging specify the   
     8              following appSettings key -->
     9     <add key="log4net.Internal.Debug" value="true"/>
    10   </appSettings>
    11   <log4net>   
    12     <!--使用Rolling方式记录日志  
    13     每个日志文件最大100KB,生成的日志文件名会是log.txt.1,log.txt.2 ...log.txt.10  
    14     如果记录的日志超过10个,会从log.txt.1开始覆盖  
    15     -->
    16     <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
    17       <file value="log\RollingFileAppender_log.txt" />
    18       <appendToFile value="true" />
    19       <rollingStyle value="Size" />
    20       <maxSizeRollBackups value="10" />
    21       <maximumFileSize value="10KB" />
    22       <staticLogFileName value="false" />
    23       <layout type="log4net.Layout.PatternLayout">
    24         <conversionPattern value="记录时间:%date %n线程ID:[%thread] %n日志级别:%-5level 所在类:%logger property:[%property{NDC}] %n描述:%message%newline %n" />
    25       </layout>
    26     </appender>   
    27     <!--定义日志的输出媒介,下面定义日志以四种方式输出。也可以下面的按照一种类型或其他类型输出。-->
    28     <root>     
    29       <!--RollingFileAppender事件日志-->
    30       <appender-ref ref="RollingFileAppender" />     
    31     </root>
    32   </log4net>
    33 </configuration>
    View Code

    这里面的问题是:文件的命名是log.txt.1, log.txt.2…方式,怎么样能是log1.txt这种命名方式呢?未解决。

    使用方式:

    首先保证必须在需要使用log4net的地方引用其dll文件,然后在namespace上方写入:

    using log4net;
    using System.Reflection;
    
    [assembly: log4net.Config.XmlConfigurator(Watch = true)]

    在需要的类里面编写:

    //创建日志记录组件实例
    ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

    在需要记录的方法里面:

    //记录
    Exception ex = new Exception("一般信息");
    log.Info("info", ex);
    log.Info(ex.Message);

    记录内容有两种:一是exception类型信息,一是string类型信息。

    记录级别有:

     //记录一般信息
     Exception ex = new Exception("一般信息");
     log.Info("info", ex);
     log.Info(ex.Message);
    //记录调试信息
     Exception ex = new Exception("调试信息");
     log.Debug("debug", ex);
     log.Debug(ex.Message);
    //记录警告信息
     Exception ex = new Exception("警告信息");
     log.Warn("Warn", ex);
     log.Warn(ex.Message);
     //记录错误日志
     Exception ex = new Exception("错误信息");
     log.Error("error", ex);
     log.Error(ex.Message);
    //记录严重错误
     Exception ex = new Exception("严重错误信息");
     log.Fatal("fatal", ex);
     log.Fatal(ex.Message);

     可定制日志记录的Header、footer

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <configSections>
        <section name="log4net" type="System.Configuration.IgnoreSectionHandler"></section>
      </configSections>
      <log4net>
        <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
          <param name="File" value="C:\Warrenwell.logSlideWireTestSlideWireTest"/>
          <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
          <param name="AppendToFile" value="true"/>
          <param name="RollingStyle" value="Composite"/>
          <param name="DatePattern" value="-yyyy.MM.dd'-System.log'"/>
          <param name="maxSizeRollBackups" value="10"/>
          <param name="maximumFileSize" value="200MB"/>
          <param name="StaticLogFileName" value="false"/>
          <layout type="log4net.Layout.PatternLayout">
            <param name="Header" value="******************************************************************************** "/>
            <param name="Footer" value="################################################################################ "/>
            <param name="ConversionPattern" value="%newline %d [%3t] %-5p %c: %m%n"/>
          </layout>
        </appender>
        <root>
          <level value="ALL"/>
          <appender-ref ref="RollingLogFileAppender"/>
        </root>
      </log4net>
      <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6"/>
      </startup>
      <appSettings>
        <add key="Channel" value="4"/>  
        <!--通道数选择,1-使能CH1,2使能CH1和CH2,4使能CH1 CH2 CH3 CH4-->
      </appSettings>
    </configuration>
    View Code

    参考:http://blog.csdn.net/zhoufoxcn/article/details/2220533      http://blog.csdn.net/zhoufoxcn/article/details/6029021

  • 相关阅读:
    真的要努力了
    实事求是
    要努力了
    新征程,新目标
    真的要放弃了吗
    集中力量 主攻文科
    May the force be with me.
    记录级排名
    Android开发过程中git、repo、adb、grep等指令的使用
    Ubuntu环境变量设置
  • 原文地址:https://www.cnblogs.com/EasonDongH/p/8064187.html
Copyright © 2020-2023  润新知