2010-06-06 49 views

回答

2

NDC代表「嵌套診斷上下文」,它是log4j的一項功能。 log4j最常見的用法就是記錄東西,而沒有指明它是哪個客戶端請求的一部分,結果是,當你的應用程序在併發請求中運行時,所有請求的所有日誌消息混雜在一起日誌文件並告訴誰做了什麼是不可能的。 NDC允許您將日誌消息標記爲屬於特定客戶端,以便您可以區分誰正在做什麼,而不必爲每個客戶端分別設置日誌記錄器。

3

嵌套診斷上下文特定於線程。

常見的用途是用於記錄信息每個會話(如果一個線程用於會話),這樣你就可以登錄原始客戶端,用戶名等和其他跨領域無屬性:

  1. 將這些屬性通過應用程序的各個層
  2. 將它們顯式記錄在每個日誌語句中。如果PatternLayout已適當配置,Log4j將輸出NDC。

另請參閱Log4j的映射診斷上下文。

1

記錄器通常是靜態定義在代碼中,這使得日誌有時很難理解。

NDC允許動態push將顯示由線程發出以後每日誌行參數,直到pop PED。

有用的,如果你想有一個日誌,如:

[request=x] a 
[request=y] a 
[request=x] b 
[request=x] c 
[request=y] b 
[request=x] d 
[request=y] c 
[request=y] d 

(聲明:我不記得確切的格式)

只需a,b,c,d這是很難理解的線程做什麼。如果pushpop請求標識是動態的,那麼它更容易遵循。也可以用於其他類型的上下文信息。

相關問題