Log4net等級說明以及按照不同級別寫入多個日誌檔案
阿新 • • 發佈:2019-01-26
等級說明:
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>