1

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>&lt;%d{yyyy-MM-dd HH:mm:ss}&gt; | %.-1level | %msg %throwable{5}%n</pattern>                    
                </encoder>
            </appender>
        </sift>
    </appender>

ユーザーをセッションから MDC に追加し、後でそれを削除するために、サーブレット Web フィルターを追加しました...

しかし、いくつかの問題があります。"userid" 変数が定義されていない場合 (なぜですか?) があるため、ログは MYAPPLI_unknown_SEPARATED.log という名前で表示されます。

MDC は Web アプリケーションのシングルトンですか? それともスコープセッションですか?

実際には、ユーザー セッションあたり 2 つのログを生成する必要があります。したがって、同じディスクリミネーターを持つ 2 番目の SiftingAppender があり、フィルター (Thresholdfilter) により、2 番目のログは異なるレベルのトレースで同じになるはずです。それは良い方法ですか?

ありがとうございました。

4

1 に答える 1

2

「ネストされた診断コンテキスト」は、このようなユース ケースを対象としています。各ログ ステートメントに ID をスタンプして、ユーザーを識別することができます (IP アドレス、ユーザー名など)。

詳細については、以前の投稿で見つけることができます。

Log4j を使用するユーザーごとに異なるログ

于 2012-10-04T09:12:29.887 に答える