我想記錄我的服務器在日誌文件中的請求/響應。我正在使用Springboot +球衣2.x + log4j2。我註冊了球衣的LoggingFeature這樣的 -如何將Log4j2 ThreadContext值注入Jersey的LoggingFeature
jerseyConfig.register(
new LoggingFeature(
java.util.logging.Logger.getLogger(
LoggingFeature.DEFAULT_LOGGER_NAME),
java.util.logging.Level.SEVERE,
LoggingFeature.Verbosity.PAYLOAD_ANY,
Integer.MAX_VALUE)
);
log4j2.xml
<!-- Jersey logger -->
<AsyncLogger name="org.glassfish" level="all" additivity="false">
<AppenderRef ref="Console" level="off" />
<AppenderRef ref="RollingFileIO" level="error" />
</AsyncLogger>
圖案,我注射事務id與log4j2的ThreadContext
的幫助。我在我的pom.xml中有log4j-jul 2.1
,並且正在運行它
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager
。
事情工作正常,唯一的問題是,在球衣的日誌中,我無法插入交易ID。我嘗試使用我的自定義代碼進行utils日誌記錄,並且能夠將transaction-id放入其中。但在球衣寫入這些日誌時,ThreadContext被清除並且事務ID值變空。
你是什麼意思「無法插入交易ID」?錯誤?不清楚使用哪種API(或者API是否存在)? –
我的意思是,在運動員編寫這些日誌時,ThreadContext被我的代碼清除。對於任何http請求,我生成transaction-id並將其放入ThreadContext中,並在響應結束時將其清除。澤西在這些事件之前和之後寫道。我通過自己的日誌記錄嘗試了java.util.logging,併成功地將事務ID置於日誌中。 – theGamblerRises