我陷入了跟踪请求的困境。很容易获得组件名称和时间(使用面向切面编程),但我没有请求的ID(requestID)
我需要这样的日志:
RequestID 组件名称 时间
- 添加547 C4 5s
- Search547 C1 5s
- Search778 C1 2s
- 添加547 C1 15s
- Search778 C4 20s
- Search547 C5 10s
- Search547 C3 2s
- Search547 C2 1s
- Search778 C2 12s
- Search547 C6 55s
- Search778 C6 1s
- 添加547 C2 6s
- 添加547 C3 46s
为了轻松接收这样的文件,这正是我正在寻找的:
RequestID 组件名称 时间
- Search547 C1 5s
- Search547 C5 10s
- Search547 C3 2s
- Search547 C2 1s
- Search547 C6 55s
RequestID 组件名称 时间
- Search778 C1 2s
- Search778 C4 20s
- Search778 C2 12s
- Search778 C6 1s
RequestID 组件名称 时间
- 添加547 C4 5s
- 添加547 C1 15s
- 添加547 C2 6s
- 添加547 C3 46s
我所有的研究都引导我将 log4j 与 MDC 和 SiftingAppender 结合使用,但我不确定它是否可以提供唯一 ID 贯穿整个请求,因为它经历了很多类、子系统和线程。
请问是否可以在不改变原有系统的情况下完成? (它应该是一个外部组件)。您知道有任何教程可以演示如何执行此操作吗?
最佳答案
“MDC 是按线程进行管理的。” http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/MDC.html
因此 MDC 将自动跨类和子系统工作,但您需要手动跨线程复制它。
关于java - 请求跟踪记录器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11614268/