NLog輸出目標及類型


targets:輸出目標節點

target:配置一個輸出目標

Type輸出類型:

  •   Console        輸出到控制台
  •   Debugger     輸出到VS輸出窗口
  •   File        輸出到文件
  •   Mail        輸出為郵件發送
  •   Network        輸出到網絡地址
  •   Database        輸出到數據庫

 

<targets async=” Boolean”>  //是否異步
  <target
 xsi:type="File"               //輸出類型
          name="String"                //節點名稱
          layout="Layout"             //日志輸入格式
          header="Layout"             //日志頭顯示的文本內容
          footer="Layout"             //日志尾顯示的文本內容
          encoding="Encoding"        //文件編碼格式
          lineEnding="Enum"          //行結束模式
          archiveAboveSize="Long"            //存檔上限值
          maxArchiveFiles="Integer"         //保存的最大存檔文件數,默認9
          archiveFileName="Layout"          //存檔文件名稱。允許使用Layout
          archiveNumbering="Enum"           //存檔文件的編號方式
          archiveEvery="Enum"                //是否在每個設定時間刻自動存檔日志文件
          replaceFileContentsOnEachWrite="Boolean"  //是否覆蓋每次寫入的日志內容,默認false
          fileAttributes="Enum"                 //文件屬性(只支持Windows)
          fileName="Layout"    //寫入日志的文件名稱 支持Layout
          deleteOldFileOnStartup="Boolean"   //啟動時,是否刪除舊的日志文件 。默認為false
          enableFileDelete="Boolean"    //否允許刪除日志文件。默認為true
          createDirs="Boolean"           //是否允許自動創建(不存在的)目錄。默認為true。
          concurrentWrites="Boolean"  //是否允許使用通過多個進程的方式,將日志信息並行寫入文件中。,默認為true
          openFileCacheTimeout="Integer"  //文件保持打開狀態的最大時間秒數
          openFileCacheSize="Integer"   //保持打開狀態的文件數量
          networkWrites="Boolean"  //是否通過多線程由不同的網絡主機並行向文件中寫入日志默認false
          concurrentWriteAttemptDelay="Integer"
          concurrentWriteAttempts="Integer"
          bufferSize="Integer"  //日志文件緩存區大小(字節) 默認值為32768(32KB)
          autoFlush="Boolean"   //在每次日志信息后,是否自動刷新文件緩存區 默認true
          keepFileOpen="Boolean" //是否保持日志文件處於打開狀態,以代替其在每次日志寫事件發生時頻繁打開和關閉默認值為false。
備注:設置此屬性為true,有助於提高性能。
/>
</targets>
View Code

具體參數說明:

layout – 日志呈現的文本內容。默認為:

 ${longdate}|${level:uppercase=true}|${logger}|${message}

 

lineEnding – 行結束模式。

可選值:

  •   CR – 在每尾部插入回車符號(ASCII 13)。
  •   CRLF – 在每行尾部插入回車和換行符號(ASCII 13 & ASCII 10)。
  •   Default – 在每行尾部插入平台相關的行結束符號(默認)。
  •   LF - 在每行尾部插入換行符號(ASCII 10)。
  •   None – 不插入任何行結束符號。

 

archiveAboveSize – 存檔上限值。當日志文件大於此值是,將自動存檔。其類型為Long。

注意:在多進程並發記錄日志的情況下,啟用該選項可能會大幅降低日志記錄速度。在單進程時,為了達到最佳性能,可以考慮設置ConcurrentWrites為false。

 

archiveEvery – 是否在每個設定時間刻自動存檔日志文件。

可選值:

  • Day – 每日存檔。
  • Hour – 每小時存檔。
  • Minute – 每分鍾存檔。
  • Month – 每月存檔。
  • None – 不按時間固定存檔。
  • Year – 每年存檔。

備注:作為寫日志的一部分,文件移動到存檔位置的操作發生的時間變換時刻。例如,當前時間從10點變至11點,則當在寫第11點或11點之后的第一個寫操作時,觸發日志文件歸  檔。

注意:在多進程並發記錄日志的情況下,啟用該選項可能會大幅降低日志記錄速度。在單進程時,為了達到最佳性能,可以考慮設置ConcurrentWrites為false。

 

filename – 寫入日志的文件名稱。支持Layout。

備注:文件名字符串中可能包含布局呈現器中的實例變量。這樣可以通過配置單個目標節點,而將日志寫入多個文件中。

以下fileName屬性值將使得NLog在應用程序啟動目錄下,根據日志級別不同,將日志信息寫到不同的文件中。

${basedir}/${level}.log

因此,所有的Debug級別日志寫入到Debug.log文件中,所有的Info級別日志寫入到Info.log文件中,其它以此類推。同時,也可以結合其它布局呈現器實例,組成所要的日志文件名稱。

 

 deleteOldFileOnStartUp – 啟動時,是否刪除舊的日志文件。其取值類型為Boolean,默認為false。

備注:此選項,僅在“fileName”參數為單個文件時有效。

 

性能優化選項

 concurrentWirtes – 是否允許使用通過多個進程的方式,將日志信息並行寫入文件中。其取值類型為Boolean,默認為true。

備注:這使得多進程記錄日志成為可能。NLog使用一種特別的技術使用文件保持打開狀態以備寫入。

 openFileCacheTimeout – 文件保持打開狀態的最大時間秒數。如果這個數字為負數,則在一定不活動時間后,文件不會自動關閉。其取值類型為Integer,默認值為-1。(即默 認狀態下文件始終處於打開狀態以備寫入。)

openFileCacheSize – 保持打開狀態的文件數量。當通過設置單個文件類型目標,且結果寫入多個不同文件(如根據日志等級或日志對象名稱)時,則可將此屬性設置為一個較 高的值以改善性能。其取值類型為Integer,默認值為5。

備注:這些文件是在最近最少使用算法基礎管理的,此算法在緩存空間不足時將最長時間內沒有使用的文件Flush。一般來說,不應當把此參數設置過大,最好不要超過10-15,這是因同時保持多個文件處於打開狀態,對系統資源來說是一個很大的消耗。

networkWrites – 是否通過多線程由不同的網絡主機並行向文件中寫入日志。其取值類型為Boolean,默認值為false。

備注:通過此此種方式,可以有效阻止文件長期保存為打開狀態。

concurrentWriteAttemptDelay – 在再次嘗試將日志寫入文件之前延遲的毫秒數。其取值類型為Integer,默認值為1。

備注:實際的延遲時間,是一個介於0到指定參數值之間的隨機整數,且在每次嘗試失敗之后,都會將此參數加倍。假使此參數值為10,則第一次重試寫入 的延遲時間(毫秒數)在 0-10之間的一個隨機數,第二次重試時為0-20之間的一個隨機數,第三次重試時為0-40之間的一個隨機數,第四次重試時為0-80之間的一個隨機數 等等,以此類推。

concurrentWriteAttempts – 在NLog丟棄日志信息之前的追加(嘗試重寫)寫次數。其取值類型為Integer,默認值為10。

bufferSize – 日志文件緩存區大小(單位:字節)。其取值類型為Integer,默認值為32768(32KB)。

autoFlush – 在每次日志信息后,是否自動刷新文件緩存區。其取值類型為Boolean,默認值為true。

keepFileOpen – 是否保持日志文件處於打開狀態,以代替其在每次日志寫事件發生時頻繁打開和關閉。其取值類型為Boolean,默認值為false。

備注:設置此屬性為true,有助於提高性能。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM