1. 安裝Nlog
在vs的NuGet包管理器中直接搜Nlog搬男,然后安裝Nlog(用于系統(tǒng)引用Nlog.dll)和Nlog.Config(用于系統(tǒng)自動生成NLog.config文件)眼五,至于圖中第三個包扳剿,不知道啥時候自己加進(jìn)去了
引用Nlog的HuGet包管理器.png
2. 配置NLog.config (非常重要)
注意看Nlog.config文件上的注釋說明 ( ̄??)
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
autoReload="true"
throwExceptions="false"
throwConfigExceptions="true"
internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log">
<!--autoReload 自動重新加載-->
<!--throwExceptions 拋出異常-->
<!--throwConfigExceptions="true" NLog 在配置文件錯誤的情況下拋出異常-->
<!--在根節(jié)點(nlog)配置 internalLogLevel, internalLogFile浊闪,可以查看NLog輸出日志時的內(nèi)部信息,比如你配置文件有錯誤哎迄,很有幫助谭贪,不過項目發(fā)布后還是關(guān)閉比較好,以免影響效率令花;-->
<targets>
<!--target參數(shù)里有些是NLog內(nèi)置參數(shù)阻桅,比如message,level,date,longdate,exception,stacktrace(消息,級別兼都,日期嫂沉,長日期,異常俯抖,堆棧跟蹤)等输瓜,NLog在輸出時會自動賦值;-->
<!--xsi:type="AsyncWrapper" 表示這條 target 將異步輸出-->
<!--queueLimit="5000" 隊列限制5000-->
<!--overflowAction="Discard" 這個不知道干啥的(⊙_⊙)芬萍?猜測是上面隊列超過5000之后的就丟棄-->
<!--layout 設(shè)置每條日志的布局,可參考官方說明 https://nlog-project.org/config/?tab=layout-renderers -->
<!-- 1.將日志寫入文件-->
<target name="Hello_File" xsi:type="AsyncWrapper" queueLimit="5000" overflowAction="Discard">
<target xsi:type="File" fileName="${currentdir}/logs/Hello_${shortdate}_${processid}_${threadid}.log" layout="${date}_${processid}_${threadid} ${level:uppercase=true} ${event-context:item=Action} ${message} ${event-context:item=Amount} ${stacktrace}" />
</target>
<target name="Hi_File" xsi:type="AsyncWrapper" queueLimit="5000" overflowAction="Discard">
<target xsi:type="File" fileName="${currentdir}/logs/Hi_${shortdate}_${processid}_${threadid}.log" layout="${date}_${processid}_${threadid} ${level:uppercase=true} ${event-context:item=Action} ${message} ${event-context:item=Amount} ${stacktrace}" />
</target>
<!-- 2.將日志消息寫入Visual Studio輸出-->
<target name="debugger" xsi:type="Debugger" layout="NLog: ${date:format=yyyy-MM-dd HH\:mm\:ss} | ${level:uppercase=true:padding=-5} | ${message}" />
<!-- 3.將日志消息寫入控制臺輸出-->
<target name="console" xsi:type="Console" layout="NLog: ${date:format=yyyy-MM-dd HH\:mm\:ss} | ${level:uppercase=true:padding=-5} | ${message}"/>
</targets>
<rules>
<!--在rules節(jié)點尤揣,指定四個target輸出日志的級別-->
<!--TRACE,DEBUG,INFO,WARN,ERROR,FATAL /(小級別) 跟蹤、調(diào)試柬祠、信息北戏、警告、錯誤漫蛔、致命 (大級別) -->
<!--name - 日志源/記錄者的名字 (允許使用通配符*) C#調(diào)用的時候 LogManager.GetLogger("這里就是name值")
minlevel - 該規(guī)則所匹配日志范圍的最小級別
maxlevel - 該規(guī)則所匹配日志范圍的最大級別
level - 該規(guī)則所匹配的單一日志級別
levels - 該規(guī)則所匹配的一系列日志級別嗜愈,由逗號分隔。
writeTo - 規(guī)則匹配時日志應(yīng)該被寫入的一系列目標(biāo)莽龟,由逗號分隔蠕嫁。
final - 標(biāo)記當(dāng)前規(guī)則為最后一個規(guī)則。其后的規(guī)則即時匹配也不會被運行毯盈。-->
<logger name="Hello_Nlog" minlevel="Info" writeTo="Hello_File" />
<logger name="Hi_Nlog" minlevel="Info" writeTo="Hi_File" />
<logger name="*" minlevel="Trace" writeTo="debugger,console" />
</rules>
</nlog>
3. 調(diào)用Nlog
個人覺得多用 LogManager.GetLogger() 這個方法吧
// 1.GetCurrentClassLogger 獲取具有當(dāng)前類名稱的日志記錄器剃毒。
// 這是一種運行緩慢的方法。確保你不是在循環(huán)中做這個搂赋。
private static Logger logger = LogManager.GetCurrentClassLogger();
logger.Fatal("2333--Fatal致命");
logger.Error("2333--Error錯誤");
logger.Warn("2333--Warn警告");
logger.Info("2333--Info信息");
// 2.GetLogger 獲取指定的命名日志程序赘阀。
private static Logger logHi = LogManager.GetLogger("Hi_Nlog");
logHi.Debug("Hi Nlog--Fatal致命");
logHi.Fatal("Hi Nlog--Fatal致命");
logHi.Error("Hi Nlog--Error錯誤");
logHi.Warn("Hi Nlog--Warn警告");
logHi.Info("Hi Nlog--Info信息");
private static Logger logHello = LogManager.GetLogger("Hello_Nlog");
logHello.Info("Hello Nlog--Info信息");