如何将信息添加到图书馆的日志消息中?
How to add infos to library's log message?
我有一个使用图书馆的 Servlet
。 servlet 和库都通过 log4j 记录内容。
servlet 是多线程的,每个请求都有一个唯一的 "request 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
您可以使用 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>
我有一个使用图书馆的 Servlet
。 servlet 和库都通过 log4j 记录内容。
servlet 是多线程的,每个请求都有一个唯一的 "request 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
您可以使用 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>