以前小編記錄日志使用的是Log4Net,雖然好用但和NLog比起來稍顯復雜。下面小編就和大伙分享一下NLog的使用方式。
引用NLog.Config
在使用NLog之前,我們要首先添加對NLog.Config的引用,這里小編使用NuGet來添加引用,在安裝NLog.Config時會同時安裝NLog.Schema和NLog包。
輸出日志
1 //實例化Logger對象,默認logger的名稱是當前類的名稱(包括類所在的命名空間名稱) 2 Logger logger = LogManager.GetCurrentClassLogger(); 3 //兩種記錄日志的方式 4 logger.Log(LogLevel.Warn, "warning"); 5 //Info方法表示日志級別是Info 6 logger.Info(() => "record logger info");
配置NLog
只有代碼是不夠的,要想讓代碼發揮作用還要進行相關配置。我們在添加NLog.Config包后,項目中會自動添加一個名為NLog.config
的文件,針對NLog的配置就寫在該文件中。
1 <targets> 2 <!--xsi:type表示日志的輸出方式,File表示將日志寫到文件中--> 3 <target name="logfile" xsi:type="File" fileName="日志文件全名"/> 4 <!--xsi:type="Console"表示將日志信息打印到控制台上--> 5 <target name="logConsole" xsi:type="Console"/> 6 </targets> 7 8 <rules> 9 <logger name="*" minlevel="Info" writeTo="logfile"/> 10 <!--name指的是程序代碼中logger對象的名字(默認是logger對象所在的命名空間名.類名),writeTo的值是配置文件中target的名字--> 11 <logger name="Test.Program" minlevel="Debug" writeTo="logConsole"/> 12 </rules>
日志在控制台中輸出效果如下:
滾動日志
當需要記錄大量的日志信息時,若將日志信息都寫入同一個文件中顯然是不合適的,創建大量的日志文件來記錄日志信息也是沒有必要的。這時我們可以使用滾動日志的形式來記錄日志信息。NLog中滾動日志的配置如下:
1 <target name="logfile" xsi:type="File" 2 <!--主日志文件路徑,${basedir}表示項目所在目錄的bin\Debug文件夾--> 3 fileName="${basedir}\Logs\log.txt" 4 <!--archiveFileName表示滾動日志存放路徑,log.{#####}.txt是滾動日志文件名--> 5 archiveFileName="${basedir}\Archives\log.{#####}.txt" 6 <!--每個日志文件大小的最大值(單位:字節),主日志文件超過大小超過該值時會將文件內容寫入滾動日志並清空主日志文件內容--> 7 archiveAboveSize="1024" 8 archiveNumbering="Rolling" 9 concurrentWrites="true" 10 <!--滾動日志文件上限數,滾動日志文件數達到上限新的文件內容會覆蓋舊文件內容 --> 11 maxArchiveFiles="2" 12 keepFileOpen="false" />
存放日志目錄結構如下:
Archives文件夾中的滾動日志:
滾動日志的更過配置方法可參考文章File target。
日志文件格式配置
從圖片中我們可以看到,默認的日志輸出格式是: 時間|日志級別|Logger對象名|日志內容
我們可以使用target標簽的layout屬性來自定義日志輸出格式,如
<target name="logfile" xsi:type="File" fileName="file.txt" layout="${date:format=yyyyMMddHHmmss} ${message}" />
使用自定義格式輸出日志內容效果如下:
另一種方式:
<target xsi:type="File" name="globalErrorLog" fileName="${basedir}\App_Data\Logs\log.txt" layout="${longdate}${newline}${message}${exception}${newline}----------${level} | ${logger}----------${newline}" />
日志輸出格式如下:

結語
日志可以幫助我們更好的調試程序,當系統出現問題時,我們可以通過日志來快速的定位到問題所在,因此在開發中日志的記錄十分重要。這里小編僅僅總結了使用NLog記錄日志的簡單用法,至於NLog的更多使用方式有興趣的讀者可以查看NLog官網的相關文檔。
參考文章:
Tutorial
Custom target
Configuration API
Configuration file
File target
Layout Renderers
FileTarget Header and Footer