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.log\SlideWireTest\SlideWireTest"/>
      <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

posted @ 2017-12-19 10:20  EasonDongH  阅读(303)  评论(0编辑  收藏  举报