私たちは、シンクと非同期操作を持つ複雑なフローを持つ巨大なレガシーコードを持っています。したがって、実行された操作が異なるスレッドで実行され、スレッドが複数の実行コンテキストにあるすべてのログメッセージで、特定の要求の一意のIDをログに記録する必要があります。すべての実行コンテキストにわたって再生フレームワークログのリクエストIDをログに記録する方法
私はMDCを使って、logger.xmlで以下のブログで与えられたカスタム%akkaディスパッチャを使って%X {req_id}を指定しようとしましたが、複数の実行コンテキストでは動作せず、動作しませんreq_id nullを返すことがある単一の実行コンテキストで確実に実行されます。 (http://yanns.github.io/blog/2014/05/04/slf4j-mapped-diagnostic-context-mdc-with-play-framework/)
複雑で巨大なコードベースのため、すべての関数呼び出しで要求IDを渡すことができません。最小限の変更でこれを達成できる方法はありますか?私たちは、再生フレームワークによっても生成されたログにそのリクエストIDが必要です。
ただし、playのすべての実行コンテキストではonRequest()を使用できません。私の理解によれば、そうですか? – user3828976
'onRequest()'はリクエストがあったときにのみ利用可能です。他のすべてのコンテキストで同様に 'TraceContext'を作成して終了しなければなりません。 – hrushikesh
シングル実行コンテキストに移行して解決しました。 – user3828976