• Log4net按照不同级别写入多个日志文件


     1 [assembly: log4net.Config.XmlConfigurator(Watch = true)]//注入
     2 在一个Web应用项目中,我使用了Fluent NHibernate作为数据访问组件,Log4net来做日志记录。实际编码中,主要使用了INFO和ERROR这两个等级来记录日志,如果按照以下Log4net配置:
     3 <root><level value="ALL"/><appender-ref ref="RollingFile"/><appender-ref ref="RollingFileTracer"/></root>
     4 
     5 log4net会把INFO和ERROR的日志记录到同一个日志文件里,Fluent NHibernate的INFO日志会大量存在于该日志文件中,这样一来对日后分析错误日志带来非常之不便,所以就想能不能单独把ERROR级的错误日志记录到一个特定的日志文件里。
     6 于是开始尝试各种配置来实现这个需要,<root>标签不支持多个<level>,也就没法通过在<root>中配置多个不同级别的日志输入,通过查阅Log4net文档,找到了<Filter>这个标记,配置如下:
     7 
     8 <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>
     9 
    10 我们可以看到“RollingFileTracer”中我们通过Filter过滤,只记录范围为ERROR到FATAL,然后在<root>增加该appender,level设置为“ALL”记录所有级别的日志。好了,配置完成,程序实现了记录不同等级的错误信息到多个日志文件。
    11 
    12 ----------------------------------事例--------------
    13 [assembly: log4net.Config.XmlConfigurator(Watch = true)]//注入
    14 <configSections><section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
    15 </configSections>
    16 
    17  <log4net>
    18     <!--存提示消息-->
    19     <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
    20       <file value="Log/Info/" />
    21       <appendToFile value="true" />
    22       <!-- 每个文件的大小限制  -->
    23       <maximumFileSize value="5MB" />
    24       <!-- 切割最多文件数 -1表示不限制产生日志文件数-->
    25       <MaxSizeRollBackups value="-1" />
    26       <DatePattern value="yyyyMMdd&quot;.htm&quot;" />
    27       <!-- RollingStyle Composite 综合  Size 按大小  Date 按时间 -->
    28       <RollingStyle value="Composite" />
    29       <StaticLogFileName value="false" />
    30       <layout type="log4net.Layout.PatternLayout">
    31         <conversionPattern value="&lt;HR COLOR=red>%n时间:%d [%t] &lt;BR>%n级别:%-5p &lt;BR>%n类:%c [%x] &lt;BR>%n%m &lt;BR>%n &lt;HR Size=1>" />
    32       </layout>
    33       <filter type="log4net.Filter.LevelRangeFilter">
    34         <levelMin value="INFO" />
    35         <levelMax value="INFO" />
    36       </filter>
    37     </appender>
    38 
    39     <!--存警告消息-->
    40     <appender name="RollingWarnFile" type="log4net.Appender.RollingFileAppender">
    41       <file value="Log/Warn/" />
    42       <appendToFile value="true" />
    43       <!-- 每个文件的大小限制  -->
    44       <maximumFileSize value="5MB" />
    45       <!-- 切割最多文件数 -1表示不限制产生日志文件数-->
    46       <MaxSizeRollBackups value="-1" />
    47       <DatePattern value="yyyyMMdd&quot;.htm&quot;" />
    48       <!-- RollingStyle Composite 综合  Size 按大小  Date 按时间 -->
    49       <RollingStyle value="Composite" />
    50       <StaticLogFileName value="false" />
    51       <layout type="log4net.Layout.PatternLayout">
    52         <conversionPattern value="&lt;HR COLOR=red>%n时间:%d [%t] &lt;BR>%n级别:%-5p &lt;BR>%n类:%c [%x] &lt;BR>%n%m &lt;BR>%n &lt;HR Size=1>" />
    53       </layout>
    54       <filter type="log4net.Filter.LevelRangeFilter">
    55         <levelMin value="WARN" />
    56         <levelMax value="WARN" />
    57       </filter>
    58     </appender>
    59 
    60     <!--存错误到危机消息-->
    61     <appender name="RollingFileTracer" type="log4net.Appender.RollingFileAppender">
    62       <file value="Log/Error/" />
    63       <appendToFile value="true" />
    64       <maximumFileSize value="10MB" />
    65       <maxSizeRollBackups value="-1" />
    66       <DatePattern value="yyyyMMdd&quot;.htm&quot;" />
    67       <RollingStyle value="Composite" />
    68       <StaticLogFileName value="false" />
    69       <layout type="log4net.Layout.PatternLayout">
    70         <conversionPattern value="&lt;HR COLOR=red>%n时间:%d [%t] &lt;BR>%n级别:%-5p &lt;BR>%n类:%c [%x] &lt;BR>%n%m &lt;BR>%n &lt;HR Size=1>" />
    71       </layout>
    72       <filter type="log4net.Filter.LevelRangeFilter">
    73         <levelMin value="ERROR" />
    74         <levelMax value="FATAL" />
    75       </filter>
    76     </appender>
    77     <root>
    78       <level value="ALL" />
    79       <appender-ref ref="RollingFile" />
    80       <appender-ref ref="RollingWarnFile" />
    81       <appender-ref ref="RollingFileTracer" />
    82     </root>
    83   </log4net>
    84 
    85 -----------------------------------------------
    86 <log4net><!-- 错误日志类--><logger name="logerror"><level value="ALL"/><appender-ref ref="ErrorAppender"/></logger><!-- 信息日志类 --><logger name="loginfo"><level value="ALL"/><appender-ref ref="InfoAppender"/></logger><!-- 错误日志附加介质--><appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender"><param name="File" value="Log\LogError\"/><param name="AppendToFile" value="true"/><param name="MaxSizeRollBackups" value="100"/><param name="MaxFileSize" value="10240"/><param name="StaticLogFileName" value="false"/><param name="DatePattern" value="yyyyMMdd&quot;.htm&quot;"/><param name="RollingStyle" value="Date"/><!--布局--><layout type="log4net.Layout.PatternLayout"><param name="ConversionPattern" value="&lt;HR COLOR=red&gt;%n异常时间:%d [%t] &lt;BR&gt;%n异常级别:%-5p &lt;BR&gt;%n异 常 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;"/></layout></appender><!-- 信息日志附加介质--><appender name="InfoAppender" type="log4net.Appender.RollingFileAppender"><param name="File" value="Log\LogInfo\"/><param name="AppendToFile" value="true"/><param name="MaxFileSize" value="10240"/><param name="MaxSizeRollBackups" value="100"/><param name="StaticLogFileName" value="false"/><param name="DatePattern" value="yyyyMMdd&quot;.htm&quot;"/><param name="RollingStyle" value="Date"/><!-- 信息日志布局--><layout type="log4net.Layout.PatternLayout"><param name="ConversionPattern" value="&lt;HR COLOR=blue&gt;%n日志时间:%d [%t] &lt;BR&gt;%n日志级别:%-5p &lt;BR&gt;%n日 志 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;"/></layout></appender></log4net>
    87  <root>
    88       <level value="ALL"/>
    89       <appender-ref ref="RollingFile"/>
    90       <appender-ref ref="RollingFileTracer"/>
    91     </root>
  • 相关阅读:
    springcloud生态图
    redis持久化机制之AOF与RDB
    关键字的理解
    Java IO6 :IO总结
    Java IO5:管道流、对象流
    Java IO4:字符流进阶及BufferedWriter、BufferedReader
    Java IO3:字节流
    Java IO2:RandomAccessFile
    Java IO1:IO和File
    java学习笔记
  • 原文地址:https://www.cnblogs.com/xxpeng/p/5581335.html
Copyright © 2020-2023  润新知