我有Servlet
使用图书馆。 servlet和库都通过log4j记录事物
servlet是多线程的,每个请求都有一个唯一的“请求ID”,如123456
。
当servlet记录内容时,它总是在日志消息的开头附加请求ID,但库不会。
像这样:
Servlet - [123456] I'm going to do stuff now and call the library
LibraryX - I do library stuff here
如何在不修改库的情况下将此请求ID附加到每个库消息日志?
我想要的是:
Servlet - [123456] I'm going to do stuff now and call the library
LibraryX - [123456] I do library stuff here
答案 0 :(得分:1)
您可以使用Mapped Diagnostic Context
只需将您的requestId放入上下文中:
MDC.put("requestId", requestId);
配置您的jog4j.xml
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d - [%X{requestId}] - %m%n" />
</layout>
</appender>