App.Config配置:
记录到项目根目录log文件夹,同一个文件中:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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>
记录格式效果:
记录到项目根目录log\yyyyMMdd文件夹,按“yyyyMMddHHmm”动态命名文件中:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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>
记录格式效果:
两种记录方式都有一个换行问题,如果只是记录string值,可以直接使用,若是要记录exception,可以将下面代码替换,带来的问题是文档最开始就会出现一次换行:
<conversionPattern value="%newline记录时间:%date %n线程ID:[%thread] %n日志级别:%-5level %n出错类:%logger property: [%property{NDC}] %n错误描述:%message%newline "/>
暂未有好的解决方案。
控制日志的数量以及每个日志的大小,超过大小就新建日志,超过规定的日志数量就从日志1开始覆盖:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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>
这里面的问题是:文件的命名是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
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<?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>
参考:http://blog.csdn.net/zhoufoxcn/article/details/2220533 http://blog.csdn.net/zhoufoxcn/article/details/6029021