如何将信息添加到图书馆的日志消息中?

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>