在撰寫Java程式時很習慣的使用log4j來當程式訊息的輸出記錄,只需要簡單的改變設定檔就可以改變訊息是要顯示於Console、存入資料庫或是存於檔案裡,而且可選擇對於不同層級的記錄,十分方便於開發的Debug。
log4j也有.net版本,就叫log4net,也是由Apache基金會開發維護,在使用上與log4j還蠻相似的,log4j在使用時只需把config檔放置於classes跟目錄就可以了,而log4net則需要手動載入此設定檔,安裝設定的方法如下。
- 下載log4net的dll檔解壓縮後,在目錄\log4net-1.2.10\bin\net\2.0\release\取出log4net.dll
- 加入參考
- 建立config檔log4net.configlevel value=”DEBUG”是記錄的層級到Debug層級,appender-ref ref=”stdout”表示使用name為stdout為輸出,而stdout設定的內容為Console輸出,另一appender-ref ref=”APException_Info”則為檔案記錄輸出,詳細的內容可以參考官方的文件。
<?xml version="1.0"?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <log4net> <!-- Setup the root category, add the appenders and set the default level --> <root> <level value="DEBUG" /> <appender-ref ref="stdout" /> <appender-ref ref="APException_Info" /> </root> <!-- Define some output appenders --> <appender name="stdout" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" /> </layout> </appender> <!-- FileAppender appends to a log and it is manually managed or size %d %logger %m%n --> <appender name="APException_Info" type="log4net.Appender.RollingFileAppender"> <file value="postit.log" /> <appendToFile value="true" /> <rollingStyle value="Date" /> <datePattern value="'.'yyyy-MM-dd" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" /> </layout> </appender> </log4net> </configuration>
- 把設定檔放置到專案目錄的bin\Debug或bin\Debug
- 在使用log4net前需要載入log4net.config
//載入log4net.config System.IO.FileInfo f = new System.IO.FileInfo("log4net.config"); log4net.Config.XmlConfigurator.Configure(f);
- 測試結果如果log4net啟用成功,則會如下圖:
否則則只會有第一個路徑,使用Console.WriteLine出來的訊息。
原始碼:
static void Main(string[] args) { //載入log4net.config System.IO.FileInfo f = new System.IO.FileInfo("log4net.config"); log4net.Config.XmlConfigurator.Configure(f); //輸出log4net.config路徑 Console.WriteLine(f.Directory); ILog logger = LogManager.GetLogger(typeof(Program)); //利用log4net輸出log4net.config路徑 logger.Info(f.Directory); Console.ReadLine(); }