以前小編記錄日志使用的是Log4Net,雖然好用但和NLog比起來稍顯復(fù)雜。下面小編就和大伙分享一下NLog的使用方式:
引用NLog.Config
在使用NLog之前,我們要首先添加對NLog.Config的引用,這里小編使用NuGet來添加引用,在安裝NLog.Config時會同時安裝NLog.Schema和NLog包
輸出日志
//實例化Logger對象,默認logger的名稱是當前類的名稱(包括類所在的命名空間名稱)
Logger logger = LogManager.GetCurrentClassLogger();
//兩種記錄日志的方式
logger.Log(LogLevel.Warn, "warning");
//Info方法表示日志級別是Info
logger.Info(() => "record logger info");
配置NLog
只有代碼是不夠的,要想讓代碼發(fā)揮作用還要進行相關(guān)配置。我們在添加NLog.Config包后,項目中會自動添加一個名為NLog.config
的文件,針對NLog的配置就寫在該文件中。
<targets>
<!--xsi:type表示日志的輸出方式,F(xiàn)ile表示將日志寫到文件中-->
<target name="logfile" xsi:type="File" fileName="日志文件全名"/>
<!--xsi:type="Console"表示將日志信息打印到控制臺上-->
<target name="logConsole" xsi:type="Console"/>
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="logfile"/>
<!--name指的是程序代碼中l(wèi)ogger對象的名字,writeTo的值是配置文件中target的名字-->
<logger name="Test.Program" minlevel="Debug" writeTo="logConsole"/>
</rules>
滾動日志
當需要記錄大量的日志信息時,若將日志信息都寫入同一個文件中顯然是不合適的,創(chuàng)建大量的日志文件來記錄日志信息也是沒有必要的。這時我們可以使用滾動日志的形式來記錄日志信息。NLog中滾動日志的配置如下:
<target name="logfile" xsi:type="File"
<!--主日志文件路徑,${basedir}表示當前應(yīng)用程序域所在的根目錄-->
fileName="${basedir}\Logs\log.txt"
<!--archiveFileName表示滾動日志存放路徑,log.{#####}.txt是滾動日志文件名-->
archiveFileName="${basedir}\Archives\log.{#####}.txt"
<!--每個日志文件大小的最大值(單位:字節(jié)),主日志文件超過大小超過該值時會將文件內(nèi)容寫入滾動日志并清空主日志文件內(nèi)容-->
archiveAboveSize="1024"
archiveNumbering="Rolling"
concurrentWrites="true"
<!--滾動日志文件上限數(shù),滾動日志文件數(shù)達到上限新的文件內(nèi)容會覆蓋舊文件內(nèi)容 -->
maxArchiveFiles="2"
keepFileOpen="false" />
滾動日志的更過配置方法可參考文章File target。
日志文件格式配置
默認的日志輸出格式是:時間|日志級別|Logger對象名|日志內(nèi)容
我們可以使用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}"
/>
日志輸出格式如下:
至于其它的格式,各位讀者可根據(jù)自己的需要來具體設(shè)定。
結(jié)語
日志可以幫助我們更好的調(diào)試程序,當系統(tǒng)出現(xiàn)問題時,我們可以通過日志來快速的定位到問題所在,因此在開發(fā)中日志的記錄十分重要。這里小編僅僅總結(jié)了使用NLog記錄日志的簡單用法,至于NLog的更多使用方式有興趣的讀者可以查看NLog官網(wǎng)的相關(guān)文檔。
參考文章:
Tutorial
Custom target
Configuration API
Configuration file
File target
Layout Renderers
FileTarget Header and Footer