これまで、log4j1.2 を使用して同期的にログを記録している Web アプリケーションがあります。async-appenderを使用するように移動しようとしています(log4j 1.2から)。async-appender を初期化する log4j.xml という XML ファイルを作成しました。ただし、ログを確認すると、リクエストの ID がログに記録されていないことがわかります (これまではログに記録されていました)。調査の結果、リクエスト ID の (キー、値) ペアが MDC に存在しなくなったと思います。
- これは、async-appender が別のスレッドであり、メイン アプリケーション スレッドと同じキーと値のペアを継承しなかったためですか?
- MDC でこれらの値を設定して、アプリケーションが要求 ID のログを再度開始する方法はありますか?
参照用の log4j.xml ファイル:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
<appender name="Async" class="org.apache.log4j.AsyncAppender">
<appender-ref ref="FILE"/>
</appender>
<appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="/log/directory/logFile"/>
<param name="DatePattern" value="'.'yyyy-MM-dd-HH"/>
<param name="Append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%-5p] %c %x - %m%n" />
</layout>
</appender>
<root>
<priority value="warn"/>
<appender-ref ref="Async"/>
</root>
</log4j:configuration>