エンドポイント/user/{user_id}/foo
を持つREST APIがあるとします。 これが呼び出されると、このリクエストの処理に起因するすべてのログには、{user_id}
に関する情報が含まれています。すべての方法に{user_id}
を渡すことなくそれを達成することは可能ですか?すべてのログメッセージにカスタム値を追加
私はロギングにSLF4jを使用しています。私のアプリケーションはSpring Bootに基づいています。
エンドポイント/user/{user_id}/foo
を持つREST APIがあるとします。 これが呼び出されると、このリクエストの処理に起因するすべてのログには、{user_id}
に関する情報が含まれています。すべての方法に{user_id}
を渡すことなくそれを達成することは可能ですか?すべてのログメッセージにカスタム値を追加
私はロギングにSLF4jを使用しています。私のアプリケーションはSpring Bootに基づいています。
また、MDCを使用することもできます。hereを参照してください。これは基本的にマップです。コンテキスト情報(例:ユーザーID)を入力するだけで、ログレイアウトで使用することができます。これが唯一のサンプルレイアウトパターンは次のようになりますlogback、のような特定の基本となるフレームワークで動作することに注意してください:
<Pattern>%X{user_id} %m%n</Pattern>
これについての詳細は、logback manualを確認してください。
ログバックのMapped Diagnotic Contextを使用して、すべてのログメッセージに{user_id}
を伝播できます。
これには2つの部分があります
{user_id}
を押しは、 MDC.put("user_id", "Pawel");
ログステートメントにMDCエントリを含めます。これは、ロギングパターンで指定して行います。したがって、ユーザIDを"user_id"
という名前のMDCエントリに格納する場合は、すべてのログイベントにそのエントリの値を含めるようにlogging.pattern.level=user_id:%X{user_id} %5p
を設定します。
あなたはここを参照してください、SLF4JのMDCシステムを使用することもできます。https://stackoverflow.com/questions/32591068/adding-context-path-to-slf4j-log-statementsを – Berger