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

我需要这样的日志:

RequestID ComponentName时间


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


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

RequestID ComponentName时间


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


RequestID ComponentName时间


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


RequestID ComponentName时间


添加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将自动跨类和子系统工作,但是您将需要手动跨线程复制它。

10-06 15:29