Web アプリケーションの「ユーザー」ごとにログを生成する必要があります。そのために、SiftingAppender と Discriminator を使用しました。
<appender name="SEPARATED" class="ch.qos.logback.classic.sift.SiftingAppender">
<discriminator>
<key>userid</key>
<defaultValue>unknown</defaultValue>
</discriminator>
<sift>
<appender name="MYAPPLI_${userid}_SEPARATED" class="ch.qos.logback.core.FileAppender">
<file>${LOG}/MYAPPLI/MYAPPLI_${userid}_SEPARATED.log</file>
<append>true</append>
<encoder>
<pattern><%d{yyyy-MM-dd HH:mm:ss}> | %.-1level | %msg %throwable{5}%n</pattern>
</encoder>
</appender>
</sift>
</appender>
ユーザーをセッションから MDC に追加し、後でそれを削除するために、サーブレット Web フィルターを追加しました...
しかし、いくつかの問題があります。"userid" 変数が定義されていない場合 (なぜですか?) があるため、ログは MYAPPLI_unknown_SEPARATED.log という名前で表示されます。
MDC は Web アプリケーションのシングルトンですか? それともスコープセッションですか?
実際には、ユーザー セッションあたり 2 つのログを生成する必要があります。したがって、同じディスクリミネーターを持つ 2 番目の SiftingAppender があり、フィルター (Thresholdfilter) により、2 番目のログは異なるレベルのトレースで同じになるはずです。それは良い方法ですか?
ありがとうございました。