NLog輸出目標及型別

2022-04-01 08:57:12 字數 4230 閱讀 5460

targets:輸出目標節點

target:配置乙個輸出目標

type輸出型別:

async=」 boolean」>  //

是否非同步

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,有助於提高效能。

/>

view code

具體引數說明:

layout– 日誌呈現的文字內容。預設為:

$|$|$|$

lineending– 行結束模式。

可選值:

archiveabovesize– 存檔上限值。當日誌檔案大於此值是,將自動存檔。其型別為long。

注意:在多程序併發記錄日誌的情況下,啟用該選項可能會大幅降低日誌記錄速度。在單程序時,為了達到最佳效能,可以考慮設定concurrentwrites為false。

archiveevery– 是否在每個設定時間刻自動存檔日誌檔案。

可選值:

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

注意:在多程序併發記錄日誌的情況下,啟用該選項可能會大幅降低日誌記錄速度。在單程序時,為了達到最佳效能,可以考慮設定concurrentwrites為false。

filename– 寫入日誌的檔名稱。支援layout。

備註:檔名字串中可能包含布局呈現器中的例項變數。這樣可以通過配置單個目標節點,而將日誌寫入多個檔案中。

以下filename屬性值將使得nlog在應用程式啟動目錄下,根據日誌級別不同,將日誌資訊寫到不同的檔案中。

$/$.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,有助於提高效能。

NLog輸出日誌到RichTextBox

新建乙個windows窗體應用程式後 在專案中引用nlog和nlog.windows.forms 在form介面新增richtextbox用以日誌輸出。新建nlog.config檔案。內容如下。該配置支援輸出到檔案和richtextbox。nlog.config需要配置複製到輸出目錄。xmlns x...

c 型別及輸出方式

在閱讀 c primer plus 一書時,其程式清單中3.4 print2.c 程式 中涉及到乙個 long long型別函式的問題,在對 段進行編譯時,出現error c2632 long followed by long is illegal 報錯。原因在於 vc6中所使用的編譯器是c90標準...

Makefile目標型別大彙總

這個章節主要講解的是模式規則中的目標。規則中的目標形式是多種多樣的,它可以是乙個或多個的檔案 可以是乙個偽目標,這是我們之前講到過的,也是經常使用的。其實規則目標還可以是其他的型別,下面是對這些型別的詳細的說明。強制目標 如果乙個目標中沒有命令或者是依賴,並且它的目標不是乙個存在的檔名,在執行此規則...