3

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

我需要这样的日志:

RequestID 组件名称 时间

  • Add547 C4 5s
  • 搜索547 C1 5s
  • 搜索778 C1 2s
  • Add547 C1 15s
  • 搜索778 C4 20s
  • 搜索547 C5 10s
  • 搜索547 C3 2s
  • 搜索547 C2 1s
  • 搜索778 C2 12s
  • 搜索547 C6 55s
  • 搜索778 C6 1s
  • Add547 C2 6s
  • Add547 C3 46s

为了轻松接收这样的文件,这正是我正在寻找的:

RequestID 组件名称 时间

  • 搜索547 C1 5s
  • 搜索547 C5 10s
  • 搜索547 C3 2s
  • 搜索547 C2 1s
  • 搜索547 C6 55s

RequestID 组件名称 时间

  • 搜索778 C1 2s
  • 搜索778 C4 20s
  • 搜索778 C2 12s
  • 搜索778 C6 1s

RequestID 组件名称 时间

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

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

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

4

1 回答 1

0

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

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

于 2013-07-11T14:44:19.573 回答