2017-10-02 6 views
0

エンドポイント/user/{user_id}/fooを持つREST APIがあるとします。 これが呼び出されると、このリクエストの処理に起因するすべてのログには、{user_id}に関する情報が含まれています。すべての方法に{user_id}を渡すことなくそれを達成することは可能ですか?すべてのログメッセージにカスタム値を追加

私はロギングにSLF4jを使用しています。私のアプリケーションはSpring Bootに基づいています。

+1

あなたはここを参照してください、SLF4JのMDCシステムを使用することもできます。https://stackoverflow.com/questions/32591068/adding-context-path-to-slf4j-log-statementsを – Berger

答えて

2

また、MDCを使用することもできます。hereを参照してください。これは基本的にマップです。コンテキスト情報(例:ユーザーID)を入力するだけで、ログレイアウトで使用することができます。これが唯一のサンプルレイアウトパターンは次のようになりますlogback、のような特定の基本となるフレームワークで動作することに注意してください:

<Pattern>%X{user_id} %m%n</Pattern> 

これについての詳細は、logback manualを確認してください。

1

ログバックのMapped Diagnotic Contextを使用して、すべてのログメッセージに{user_id}を伝播できます。

これには2つの部分があります

  • MDC例えばにあなたの{user_id}を押し

    は、 MDC.put("user_id", "Pawel");

  • ログステートメントにMDCエントリを含めます。これは、ロギングパターンで指定して行います。したがって、ユーザIDを"user_id"という名前のMDCエントリに格納する場合は、すべてのログイベントにそのエントリの値を含めるようにlogging.pattern.level=user_id:%X{user_id} %5pを設定します。

詳細in the docs

関連する問題