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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM