等级说明:
Level级别:DEBUG <INFO<WARN<ERROR<FATAL
<root> <level value="INFO"/> <appender-ref ref="RollingLogFileAppender"/> <appender-ref ref="ColoredConsoleAppender"/> </root>上述的RollingLogFileAppender是是能够捕获到INFO,WARN,ERROR,FATAL四个级别的信息,如果没有特殊设置,是会将该四个级别的信息全部写入日志。这会使得日志很大,在查找日志时变得很不方便,那么如何将按照不同级别将日志写入多个日志文件呢?
关键在于使用“RollingFileTracer”参数设置过滤现引入一篇博文,出自:
http://www.cnblogs.com/Fred_Xu/archive/2012/02/08/Configure-Log4net-to-write-to-multiple-files-by-level.html如下:
在一个Web应用项目中,我使用了Fluent NHibernate作为数据访问组件,Log4net来做日志记录。实际编码中,主要使用了INFO和ERROR这两个等级来记录日志,如果按照以下Log4net配置: <root> <level value="ALL"/> <appender-ref ref="RollingFile"/> <appender-ref ref="RollingFileTracer"/> </root> log4net会把INFO和ERROR的日志记录到同一个日志文件里,Fluent NHibernate的INFO日志会大量存在于该日志文件中,这样一来对日后分析错误日志带来非常之不便,所以就想能不能单独把ERROR级的错误日志记录到一个特定的日志文件里。 于是开始尝试各种配置来实现这个需要,<root>标签不支持多个<level>,也就没法通过在<root>中配置多个不同级别的日志输入,通过查阅Log4net文档,找到了<Filter>这个标记,配置如下: 复制代码 <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> </configSections> <log4net> <!--http://logging.apache.org/log4net/release/sdk/log4net.Layout.PatternLayout.html--> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="[%p %t] [%date{yyyy-MM-dd HH:mm:ss,fff}] %-5l - %m%n"/> </layout> </appender> <appender name="RollingFile" type="log4net.Appender.RollingFileAppender"> <file value="App_Data/log.log"/> <appendToFile value="true"/> <maximumFileSize value="5000KB"/> <maxSizeRollBackups value="500"/> <CountDirection value="1"/> <RollingStyle value="Size"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="[%p %t] [%date{yyyy-MM-dd HH:mm:ss,fff}] %-5logger - %m%n"/> </layout> </appender> <appender name="RollingFileTracer" type="log4net.Appender.RollingFileAppender"> <file value="App_Data/Trace.log"/> <appendToFile value="true"/> <maximumFileSize value="5000KB"/> <maxSizeRollBackups value="500"/> <CountDirection value="1"/> <RollingStyle value="Size"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="[%p] %m%n"/> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <levelMin value="ERROR" /> <levelMax value="FATAL" /> </filter> </appender> <root> <level value="ALL"/> <appender-ref ref="RollingFile"/> <appender-ref ref="RollingFileTracer"/> </root> </log4net> 复制代码 我们可以看到“RollingFileTracer”中我们通过Filter过滤,只记录范围为ERROR到FATAL,然后在<root>增加该appender,level设置为“ALL”记录所有级别的日志。好了,配置完成,程序实现了记录不同等级的错误信息到多个日志文件。 参考:http://stackoverflow.com/questions/1372435/configure-log4net-to-write-to-multiple-files
另附上个人项目中的log4net配置文件,主要功能如下:
1.只纪录错误日志,方便日后错误查找
2.按照不同的颜色在控制台显示不同错误信息方便即时调试
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> </configSections> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> </startup> <log4net> <!--定义输出到文件中--> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <!--定义文件存放位置--> <file value="log\\"/> <appendToFile value="true"/> <rollingStyle value="Date"/> <datePattern value="yyyy\\yyyyMM\\yyyyMMdd'.txt'"/> <staticLogFileName value="false"/> <!--定义文件最大个数,超过按顺序删除--> <param name="MaxSizeRollBackups" value="100"/> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <maximumFileSize value="1MB" /> <filter type="log4net.Filter.LevelRangeFilter"> <levelMin value="ERROR" /> <levelMax value="FATAL" /> </filter> <layout type="log4net.Layout.PatternLayout"> <!--每条日志末尾的文字说明--> <!--输出格式--> <!--样例:2008-03-26 13:42:32,111 [10] INFO Log4NetDemo.MainClass [(null)] - info--> <conversionPattern value="%newline %n记录时间:%date %n线程ID:[%thread] %n日志级别: %-5level %n出错类:%logger property: [%property{NDC}] - %n错误描述:%message%newline %n"/> </layout> </appender> <appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender"> <mapping> <level value="ERROR" /> <foreColor value="White" /> <backColor value="Red, HighIntensity" /> </mapping> <mapping> <level value="DEBUG" /> <backColor value="Green" /> </mapping> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout> </appender> <root> <level value="INFO"/> <appender-ref ref="RollingLogFileAppender"/> <appender-ref ref="ColoredConsoleAppender"/> </root> </log4net> </configuration>