请求跟踪记录器

时间:2012-07-23 14:11:44

标签: java logging log4j mdc

我坚持跟踪请求。很容易获得组件名称和时间(使用面向方面的编程)但我没有请求ID(requestID)

我需要这样的日志:

RequestID ComponentName Time

  • Add547 C4 5s
  • Search547 C1 5s
  • Search778 C1 2s
  • Add547 C1 15s
  • Search778 C4 20s
  • Search547 C5 10s
  • Search547 C3 2s
  • Search547 C2 1s
  • Search778 C2 12s
  • Search547 C6 55s
  • Search778 C6 1s
  • Add547 C2 6s
  • Add547 C3 46s

为了轻松接收这样的文件,这正是我想要的:

RequestID ComponentName Time

  • Search547 C1 5s
  • Search547 C5 10s
  • Search547 C3 2s
  • Search547 C2 1s
  • Search547 C6 55s

RequestID ComponentName Time

  • Search778 C1 2s
  • Search778 C4 20s
  • Search778 C2 12s
  • Search778 C6 1s

RequestID ComponentName Time

  • Add547 C4 5s
  • Add547 C1 15s
  • Add547 C2 6s
  • Add547 C3 46s

我的所有研究都引导我使用log4j和MDC以及SiftingAppender,但我不确定它是否可以提供唯一的ID 贯穿整个请求,因为它经历了很多类,子系统和线程。

你能否告诉我是否可以在不改变原系统的情况下完成? (它应该是一个外部组件)。你知道任何教程如何做到这一点吗?

1 个答案:

答案 0 :(得分:0)

“MDC是基于每个线程管理的。” http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/MDC.html

因此,MDC将自动跨类和子系统工作,但您需要手动将其复制到线程中。