在程序運行中,往往會出現各種出乎開發人員意料的異?;蛘咤e誤,所以,記錄詳細的程序運行日志信息,有利于開發人員和運維人員排查異常信息,提高工作效率。而本菜鳥在大神推薦和指導下使用log4net這一插件工具,其中也學到了一些皮毛,所謂好記性不如爛筆頭嘛。為此,將把這些心得體會記錄下來,以免遺忘。同時,也為各位童鞋提供一些參考。在此聲明,本文粗淺之極,大神莫入。
對于log4net有什么功能,這里就不贅述了。直接進入本文重點,也就是log4net的配置和簡單使用。
首先,項目要引入log4net.dll。
然后,為項目增加配置文件——log4net.config
<log4net><!--日志配置,按日期保存--> <appender name="DefaultLog" type="log4net.Appender.RollingFileAppender"> <file value="LogFiles/" /> <threshold value="WARN" /> <appendToFile value="true" /> <maxSizeRollBackups value="-1" /> <maximumFileSize value="30MB" /> <rollingStyle value="Composite" /> <datePattern value='yyyy-MM-dd".log"' /> <staticLogFileName value="false" /> <layout type="log4net.Layout.PatternLayout"> <header value="-----------程序開始運行-----------" /> <footer value="-----------程序結束運行-----------" /> <conversionPattern value="%date [%thread] %-5level %logger - %message%n" /> </layout> </appender> <!--日志配置,按日期保存--> <appender name="BaseLog" type="log4net.Appender.RollingFileAppender"> <file value="LogFiles/" /> <appendToFile value="true" /> <maxSizeRollBackups value="-1" /> <maximumFileSize value="30MB" /> <rollingStyle value="Composite" /> <datePattern value='yyyy-MM-dd".log"' /> <staticLogFileName value="false" /> <layout type="log4net.Layout.PatternLayout"> <header value="-----------程序開始運行-----------" /> <footer value="-----------程序結束運行-----------" /> <conversionPattern value="%date [%thread] %-5level - %message%newline" /> </layout> </appender> <!--控制臺日志配置,按日期保存--> <appender name="ConsoleLog" type="log4net.Appender.RollingFileAppender"> <file value="LogFiles/" /> <appendToFile value="true" /> <maxSizeRollBackups value="-1" /> <maximumFileSize value="30MB" /> <rollingStyle value="Composite" /> <datePattern value='yyyy-MM-dd".log"' /> <staticLogFileName value="false" /> <layout type="log4net.Layout.PatternLayout"> <header value="-----------程序開始運行-----------" /> <footer value="-----------程序結束運行-----------" /> <conversionPattern value="%date [%thread] %-5level - %message%newline" /> </layout> </appender> <!--窗體日志配置,按日期保存--> <appender name="FromLog" type="log4net.Appender.RollingFileAppender"> <file value="LogFiles/" /> <appendToFile value="true" /> <maxSizeRollBackups value="-1" /> <maximumFileSize value="30MB" /> <rollingStyle value="Composite" /> <datePattern value='yyyy-MM-dd".log"' /> <staticLogFileName value="false" /> <layout type="log4net.Layout.PatternLayout"> <header value="-----------程序開始運行-----------" /> <footer value="-----------程序結束運行-----------" /> <conversionPattern value="%date [%thread] %-5level - %message%newline" /> </layout> </appender> <!-- 根級別,作為默認值 --> <root> <!-- OFF - 不輸出任何日志 FATAL - 僅輸異常 ERROR - 輸出錯誤/異常信息 WARN - 輸出警告/錯誤/異常信息 INFO - 輸出普通/警告/錯誤/異常信息,默認 DEBUG - 輸出調試/普通/警告/錯誤/異常信息 ALL - 與DEBUG相同 --> <level value="WARN" /> <!--如果找不到對應的logger,會自動使用這個默認的日志--> <appender-ref ref="DefaultLog" /> </root> <logger name="MyLog.Base.Log"> <level value="DEBUG" /> <appender-ref ref="BaseLog" /> </logger> <logger name="MyLog.Base.Console"> <level value="DEBUG" /> <appender-ref ref="ConsoleLog" /> </logger> <logger name="MyLog.Base.Form"> <level value="DEBUG" /> <appender-ref ref="FromLog" /> </logger></log4net>
在此,簡單解釋上面配置文件的使用,首先是<appender/>和<logger/>節點必須成對,每對配置,就是一個日志輸出的配置。<appender-ref ref="BaseLog" />中屬性ref的值對應<appender>的屬性name的值。而<layout/>中的信息為日志輸出的格式信息。其他的,就不一一解釋了。
配置文件完成以后,為了讓log4跑起來,還需要添加一個調用類——Logger。
using System;using System.Collections.Generic;using System.Linq;using System.Text;using log4net;namespace Base{ public class Loggers { public static readonly ILog FormLogger = LogManager.GetLogger("MyLog.Base.Form"); public static readonly ILog ConsoleLogger = LogManager.GetLogger("MyLog.Base.Console"); public static readonly ILog BaseLogger = LogManager.GetLogger("MyLog.Base.Log"); }}
值得注意的是,上面類中GetLogger("MyLog.Base.Log")中“MyLog.Base.Log”必須和配置文件中<loggger name="MyLog.Base.Log">的name屬性值保持一致。
之后,為了讓log4net跑起來,還需要添加代碼來加載log4net配置文件,根據大神的傳授,有兩種加載方法:
1、在程序文件AssemblyInfo.cs中加上
[assembly: log4net.Config.xmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
2、在程序load事件中加上
//讀取log4net配置文件 log4net.Config.XmlConfigurator.Configure(new Uri(AppDomain.CurrentDomain.SetupInformation.applicationBase + "log4net.config"));
P.S:方法一我沒有實現成功,可能是因為某些問題我沒有發現,哪位童鞋知道原因可以告知我一下。不過方法二的使用成功了。
最后就是寫入信息到文件的問題了,其實就一句代碼:
Loggers.BaseLogger.Debug("Run Start");
同時,我們還可以根據日志輸出的級別來選取輸出的方法,日志的輸出級別如下:
OFF - 不輸出任何日志
FATAL - 僅輸異常
ERROR - 輸出錯誤/異常信息
WARN - 輸出警告/錯誤/異常信息
INFO - 輸出普通/警告/錯誤/異常信息,默認
DEBUG - 輸出調試/普通/警告/錯誤/異常信息
ALL - 與DEBUG相同
本文完。
附注:log4net下載地址:點擊打開鏈接
新聞熱點
疑難解答