當我們開發軟件時,一般都會加入運行期的跟蹤手段,以方便后續故障分析和Bug調試。.net framework本身提供了一個System.Diagnostics.Trace類來實現流程跟蹤功能,但很多時候卻不能滿足我們的需求,這時往往需要一個更加強大的第三方日志系統。
前段時間在項目中使用了log4net來記錄日志,感覺還不錯,這里簡單的介紹一下它的用法。使用log4net需要如下幾個步驟:
一、在Nuget中下載log4net
二、在使用日志的類的名字空間前加上XmlConfiguratorAttribute標記
不加這個標記的話則log無法生效,如果類較多則比較麻煩,此時可以把這個配置放在AssemblyInfo.cs中,針對整個程序集生效。
三、在代碼中使用log4net記錄日志
簡單的做法就是直接使用內置的Log類:
static void Main(string[] args)
{
ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
log.Error("error", new Exception("發生了一個異常"));
log.Fatal("fatal", new Exception("發生了一個致命錯誤"));
log.Info("info");
log.Debug("debug");
log.Warn("warn");
Console.WriteLine("日志記錄完畢。");
}
四、配置輸出方式
log4net的輸出方式是通過配置文件(App.config)來控制的,通過配置文件的好處是非常靈活,可以動態改變配置。一個簡單的示例如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
</configSections>
<log4net>
<root>
<appender-ref ref="LogFileAppender" />
</root>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="r:/log4netfile.txt" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<LockingModel type="log4net.Appender.FileAppender+MinimalLock, log4net"/>
<datePattern value="yyyyMMdd-HH:mm:ss" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] %X{auth} - Line:%L %m%n" />
</layout>
</appender>
</log4net>
</configuration>
配置文件的方式初看上去非常復雜,但使用過后就會體會到它的強大之處。上面的配置定義了一個文本文件的方式輸出日志,這個也是最常用的一種方式。log4net提供了非常強大的控制策略,例如,可以控制輸出日志輸出格式、頁眉頁腳、覆蓋策略、安全控制等。具體的說明可以參看下Log4net中的RollingFileAppender解析這篇文章。
除了以文本方式輸出外,還可以使用系統日志、數據庫、控制台、郵件等多種方式。並且可以組合使用,這里就不一一介紹了,感興趣的朋友可以參考下log4net的各種Appender配置示例這篇文章。
小結
log4net非常靈活而強大,是一個不可多得的日志系統。本文這里只是介紹了一下log4net的基本用法,方便初次上手的朋友快速入門。如果需要更加深入的了解它,請參考codeproject上的文章log4net Tutorial。