2014年4月9日 星期三

C# Nlog 基本設定





在Nlog中 也有等級區分


可以根據不同級別,用不同的方式來儲存(:email,檔案,資料庫....)

Trace - 追蹤,非常仔細的logs,可能包含大量的訊息,這個級別通常在開發過程中使用。
Debug - 偵錯."追蹤"精簡一點的logs, 通常不在開發過程中使用。
Info -  一般資訊,通常在開發過程中使用。
Warn -  警告, 通常用於非關鍵問題 , 這可以回收或可暫時失效
Error - 錯誤信息

Fatal - 很嚴重的錯誤

---------
----------------------------------

Log訊息輸出格式

log 訊息的輸出格式,在layout="你要的輸出格式"  ==> layout="特殊標記$ {}"  ==> layout = "${第一個} ${第二個} ${第三個}"
官方網站 https://github.com/NLog/NLog/wiki/Layout-renderers
可以輸出XMLCSV等複雜格式

常用的:
${time} 時間
${asp-session:variable=String}  Session
${aspnet-request:cookie=String:serverVariable=String:queryString=Strin:item=String:form=String}
Cookie_ queryString

${basedir} 根目錄
${date} 日期+時間
${level} log
等級
${newline} 換行
${shortdate} yyyy-MM-dd
日期

請參考 https://github.com/nlog/NLog/wiki/Layout%20Renderers
--------------------------------------------------------

可以輸出log

log4jEmail、事件檢視器、file文件、資料庫…….

請參考https://github.com/nlog/NLog/wiki/Targets

-------------------------------------------

引用 config 

假設要用引用某一個 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">
  <include ignoreErrors="false" file="${basedir}/QQQQ.config"/>
</nlog>
ignoreErrors 的屬性預設為 false ,就是當檔案沒找到的時候,就會出錯,無法繼續執行。
如果改為 true 就會跳過錯誤 繼續執行。




-------------------------------------------

變數 Variable

用法在於當你使用 variable 設定一個 name 某一個value
可以在 其他地方 共同使用這個變數。
<variable name="var" value="xxx" />

<nlog>
 <variable name="logDirectory" value="${basedir}/logs/${shortdate}"/>
  <targets>
    <target name="file1" xsi:type="File" fileName="${logDirectory}/file1.txt"/>
    <target name="file2" xsi:type="File" fileName="${logDirectory}/file2.txt"/>
  </targets>
</nlog>





-------------------------------------------

自動重新讀取功能 autoReload

當你的網站長時間上線時, 如果忽然想增加某一個level 級別 ,可以不用停止網站,加上這個屬性,每次紀錄log 時會重新讀取此設定。
<nlog autoReload="true">
   ...
</nlog>


-------------------------------------------

緩衝 buffering 

假設要e-mail時, 設定 buffersize=”10”,表示錯誤訊息累積到10個以後會發送。
<nlog>  
  <targets>  
    <default-wrapper xsi:type="BufferingWrapper" bufferSize="100"/>  
    <target name="f1" xsi:type="File" fileName="f1.txt"/>  
    <target name="f2" xsi:type="File" fileName="f2.txt"/>  
  </targets>  
  <targets>  
    <default-wrapper xsi:type="AsyncWrapper">  
      <wrapper-target xsi:type="RetryingWrapper"/>  
    </default-wrapper>  
    <target name="n1" xsi:type="Network" address="tcp://localhost:4001"/>  
    <target name="n2" xsi:type="Network" address="tcp://localhost:4002"/>  
    <target name="n3" xsi:type="Network" address="tcp://localhost:4003"/>  
  </targets>  
</nlog>




-------------------------------------------
--------------------------------------------

非同步 AsyncWrapper

     <targets>
        <target name="asyncFile" xsi:type="AsyncWrapper">
            <target name="logfile" xsi:type="File" fileName="file.txt" />
        </target>
    </targets>

    <rules>
        <logger name="*" minlevel="Info" writeTo="asyncFile" />
    </rules>

非同步的另一種寫法:(在上面多加一個 async="true" 就可以了。)
<targets async="true">
  ... your targets go here ...
</targets>






-------------------------------------------
    輸出單一個log:
    <targets>
        <target name="logfile" xsi:type="File" fileName="file.txt" />
    </targets>

    <rules>
        <logger name="*" minlevel="Info" writeTo="logfile" />
    </rules>

   同時輸出多個log:
    <targets>
        <target name="logfile" xsi:type="File" fileName="file.txt" />
        <target name="console" xsi:type="Console" />
    </targets>

    <rules>
        <logger name="*" minlevel="Trace" writeTo="logfile" />
        <logger name="*" minlevel="Info" writeTo="console" />
    </rules>
----------------------------------------------------------
log 一般資訊
https://github.com/nlog/nlog/wiki/Configuration-file



參考:
mrkt 的程式學習筆記
Will
http://blog.miniasp.com/post/2010/07/18/Useful-Library-NLog-Advanced-NET-Logging.aspx
github
https://github.com/nlog/nlog/wiki
Huan-Lin 學習筆記
http://huan-lin.blogspot.com/2013/08/nlog-configuration-example.html
Xian's 學習筆記
http://blog.developer.idv.tw/2012/12/nlog.html
HamielKuo記事
http://www.dotblogs.com.tw/c5todo/archive/2013/10/15/124125.aspx






沒有留言:

張貼留言