星期三, 1月 04, 2006

[.Net]log4net

在 .Net/mono 程序裡面使用 log4net,是極為簡單的事情.
首先到 log4net官方網站下載.
解開以後,到 bin 資料夾下,找適合你用的 assembly file. (p.s. 其實也不用特別找, .Net 與 mono 是通用的, .Net compact framework 與 sccli 我就沒試過了)
接著,視你自己專案的類型,該引用的就引用 (Visual Studio.Net/MonoDevelop/SharpDevelop),該改 Nant build file / Makefile 的就改.

步驟一:
使用 log4net 的第一步,是在你程序一開始的地方,去解析 log4net 的 configuration.
log4net.Config.XmlConfigurator.Configure();

一般性的 Windows form 程序通常是放在 Main 的一開始,而 asp.net 程序通常則是在 global.asax (codebehind 的話就是 global.asax.cs) 的 Application_Start 事件.

步驟二:
接著在你想要進行 log 的類別宣告這一個屬性.
protected static readonly ILog log = LogManager.GetLogger(typeof( your_class_name ));

要當成一般變數來用也行
ILog log = LogManager.GetLogger(typeof( your_class_name ));


步驟三:
最後是在你想要 log 的地方,放置這麼一行
log.Info( "your message here." );

大功告成!!

就這麼簡單.

而 ILog 不只 Info() method 可以操作,還可以有 Debug(), Error(), Fatal(), Warn() 這幾個 method 可用,他們各代表了不同的層級.
層級的區分大致是這樣: Debug < Info < Warn < Error < Fatal
換句話說,當你 Configuration 裡的層級設定為 Debug 的時候,只要你有調用 ILog 的任何一個 method 來 log, 這些訊息都會出現在 log 裡面.
當你 Configuration 裡的層級設為 Warn 的時候,你有調用 Warn(), Error(), Fatal() 這三個 method 來 log 的地方,這些訊息都會出現在 log 裡面.

再來就是 Configuration.
Windows form 的 configuration 檔案通常名稱是 xxx.exe.config, asp.net 的 configuration 檔案則是 web.config
這裡主要放置兩個部份:

  • configSection:
    <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
    </configSections>
    p.s.這裡我有一個慘痛的教訓,查了好久,結果發現是打錯字, "log4net.Config" 我打成 "log4net.config",一度我還懷疑是 configuration file 問題,還跑去 trace log4net 的程式 =_=", 如果你確定你都設對了,該設的也都設定了,不妨利用 LogManager.GetRepository 取得 ILoggerRepository,去看 Configured 屬性,如果是 false,表示沒設定到,可以試著檢查大小寫看看.

  • log4net, 這邊請參考 log4net Config Examples 會比較快一點.



參考資料:

沒有留言: