什么是NDC日志以及我们如何在我们的应用程序中使用它以及它的重要性

时间:2010-06-06 14:08:35

标签: java struts

什么是NDC日志以及我们如何在我们的应用程序中使用它以及它的重要性...

3 个答案:

答案 0 :(得分:4)

嵌套诊断上下文特定于线程。

常用用于记录信息每个会话(如果一个线程用于会话),因此您可以记录原始客户端,用户名等以及其他横切属性,而无需: / p>

  1. 将这些属性传递到应用程序的各个层
  2. 在每个日志语句中显式记录它们。如果PatternLayout已正确配置,Log4j将输出NDC。
  3. 另请参阅Log4j的映射诊断上下文。

答案 1 :(得分:3)

NDC代表“嵌套诊断上下文”,它是log4j的一个功能。 log4j最常见的用法就是记录东西而不指示客户端请求是什么的一部分,结果是当你的应用程序在生产中运行并发请求时,所有请求的所有日志消息都混杂在一起日志文件,告诉谁做了什么是不可能的。 NDC允许您将日志消息标记为属于特定客户端,以便您可以区分谁在做什么,而无需为每个客户端分别使用记录器。

答案 2 :(得分:2)

记录器通常在代码中定义静态,这使得日志有时难以理解。

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动态请求ID,则更容易理解。也可以用于其他类型的上下文信息。