天天看點

NLog的配置和使用(一)

NLog是一款擁有豐富的途徑選擇和管理能力的可用于.net、Silverlight和Windows Phone的免費開源架構.它可以将任何.net語言産生的調試資訊轉化為上下文資訊(包括日期和時間,嚴重程度,程序,線程,環境資訊),根據你喜好的形式發送到一個或者多個目标存儲。那麼,我們如何在一個應用程式上配置使用NLog,将日志輸出到控制台和檔案?

首先,打開VS2012建立一個控制台應用程式,添加NLog.dll引用。

在Program.cs檔案中,擷取一個Logger執行個體,取名為NLogConsoleExample(名字可任意),也可采用 LogManager.GetCurrentClassLogger()來擷取一個以目前類名為名稱的Logger執行個體;然後我們在main方法中添加幾行簡單調用NLog輸出不同級别的日志資訊的代碼,如下圖:

NLog的配置和使用(一)

接下來,開始配置NLog配置檔案,NLog配置檔案支援兩種方式:

1)是将配置寫到應用程式的配置檔案(通常是applicationName.exe.config)或者Web.config檔案中;

2)獨配置到一個檔案,通常是NLog.config

    這裡采用第一種方法,首先我們需要在配置檔案中增加如下形式的配置

<configuration>              <configSections>              <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/>              </configSections>              <nlog>              </nlog>              </configuration>           

在<nlog />節點中,有五個子節點可讓我們配置,前兩個節點是配置必須的,而後面的幾個是可選,可用于更進階的場景。

  • <targets />

     –定義日志記錄輸出的目标位置,可以配置為輸出到控制台,檔案,資料庫,事件日志等等
  • <rules />

     –定義日志輸出路徑規則
  • <extensions />

     –定義從某個*.dll擷取Nlog擴充
  • <include />

    – 包含外部的配置檔案
  • <variable />

     – 設定配置變量的值

簡單的配置如下圖,标出的序号要點在圖下方将進行講解注釋。

NLog的配置和使用(一)

注釋:

  1. autoReload="true"表示在不重新啟動應用程式的情況下,修改配置檔案,NLog會自動加載應用;
  2. internalLogLevel="Trace"internalLogFile="logs/internalLog.txt"這個設定可以将NLog内部的日志消息寫到應用程式目錄下的logs檔案夾裡的internalLog.txt檔案中;(這個配置常用于調試Nlog的配置是否正确,調試完成後,最好關閉以提高性能)
  3. <target>的配置:type="File|Console" 屬性是設定日志輸出目标是"File"(檔案)或者"Console"(控制台);

    type="File"的時候要指定fileName屬性, fileName="${basedir}/logs/${shortdate}.log" 設定日記記錄檔案的路徑和名稱,即應用程式下的log目錄裡格式為yyyy-MM-DD.log;

    layout="${date:format=yyyyMMddHHmmss} ${callsite} ${level} ${message}" 設定日志輸出格式(可查閱官網說明).

  4. name="NLogConsoleExample"表示配置的規則适用于Logger名稱為“NLogConsoleExample”,如果填*,則表示所有的Logger都運用這個規則。
  5. minlevel="Debug"maxlevel="Error"用來配置記錄的級别為最小是"Debug"最大為"Error"(備注:此處也可以用levels="Debug,Error"來設定,說明隻輸出Debug級别以及Error級别的日志,官網此處解說有誤:
    NLog的配置和使用(一)
    )
  6. writeTo="t1,t2"其中t1,t2分别代表上面設定的targets名稱為t1以及t2的目标輸出,此處表示将分别将日志資訊輸出到檔案和控制台。

附上整個配置檔案的完整代碼:

<?xml version="1.0" encoding="utf-8" ?>              <configuration>              <configSections>              <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/>              </configSections>              <nlog autoReload="true" internalLogLevel="Trace" internalLogFile="logs/internalLog.txt">              <targets>              <target name="t1" type="File" fileName="${basedir}/logs/${shortdate}.log"              layout="${longdate} ${callsite} ${level}:               ${message} ${event-context:item=exception} ${stacktrace} ${event-context:item=stacktrace}"/>              <target name="t2" type="Console" layout="${date:format=yyyyMMddHHmmss} ${callsite} ${level} ${message}"/>              </targets>              <rules>              <logger name="NLogConsoleExample" minlevel="Debug" maxlevel="Error" writeTo="t1,t2" />              </rules>              </nlog>              <startup>               <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />              </startup>              </configuration>           

最後示例結果顯示: 圖一:運作程式後,控制台輸出指定格式的符合設定級别(Debug到Error)的日志資訊,并且在應用程式目錄生成一個名為logs的目錄。

NLog的配置和使用(一)

圖二:logs目錄下分别含有記錄Nlog内部跟蹤日志資訊的檔案internalLog.txt以及形式為yyyy-MM-DD.log的存放對應級别(Debug到Error)的日志輸出。

NLog的配置和使用(一)

圖三:2016-07-15.log内容展示:

NLog的配置和使用(一)

圖四:internalLog.txt内容展示:(這個檔案記錄的内容常用于調試Nlog一些配置錯誤或者其他内部錯誤)

NLog的配置和使用(一)

PS:NLog 官網位址  http://nlog-project.org/