NLOG

 

NLog的配置和使用(一)

標籤: Nlogc#

NLog是一款擁有豐富的途徑選擇和管理能力的可用於.net、Silverlight和Windows Phone的免費開源框架.它能夠將任何.net語言產生的調試信息轉化爲上下文信息(包括日期和時間,嚴重程度,進程,線程,環境信息),根據你喜愛的形式發送到一個或者多個目標存儲。那麼,咱們如何在一個應用程序上配置使用NLog,將日誌輸出到控制檯和文件?
首先,打開VS2012建立一個控制檯應用程序,添加NLog.dll引用。c#

在Program.cs文件中,獲取一個Logger實例,取名爲NLogConsoleExample(名字可任意),也可採用 LogManager.GetCurrentClassLogger()來獲取一個以當前類名爲名稱的Logger實例;而後咱們在main方法中添加幾行簡單調用NLog輸出不一樣級別的日誌信息的代碼,以下圖:

接下來,開始配置NLog配置文件,NLog配置文件支持兩種方式:
1)是將配置寫到應用程序的配置文件(一般是applicationName.exe.config)或者Web.config文件中;
2)獨配置到一個文件,一般是NLog.config
    這裏採用第一種方法,首先咱們須要在配置文件中增長以下形式的配置app

<configuration>
<configSections>
<section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/>
</configSections>
<nlog>
</nlog>
</configuration>
在<nlog />節點中,有五個子節點可以讓咱們配置,前兩個節點是配置必須的,然後面的幾個是可選,可用於更高級的場景。
  • <targets /> –定義日誌記錄輸出的目標位置,能夠配置爲輸出到控制檯,文件,數據庫,事件日誌等等
  • <rules /> –定義日誌輸出路徑規則
  • <extensions /> –定義從某個*.dll獲取Nlog擴展
  • <include />– 包含外部的配置文件
  • <variable /> – 設置配置變量的值
簡單的配置以下圖,標出的序號要點在圖下方將進行講解註釋。
註釋:
  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級別的日誌,官網此處解說有誤:)
  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的目錄。
圖二:logs目錄下分別含有記錄Nlog內部跟蹤日誌信息的文件internalLog.txt以及形式爲 yyyy-MM-DD.log的存放對應級別(Debug到Error)的日誌輸出。
圖三:2016-07-15.log內容展現:
圖四:internalLog.txt內容展現:(這個文件記錄的內容經常使用於調試Nlog一些配置錯誤或者其餘內部錯誤)
PS:NLog官網地址  http://nlog-project.org/
相關文章
相關標籤/搜索