マルチスレッドに forkjoinpool を使用し、ロギングに log4j を使用するプロジェクトに取り組んでいます。私たちのプロジェクトでは、複数の「ジョブ」が並行して実行されており、各ジョブは 1 つのスレッドによってのみ処理されます。
ロギングの問題は、対応するログ エントリにジョブ ID 情報が含まれるように、ロガーにジョブ ID のプレフィックスを付けることができるジョブのメイン フロー内にあります。ただし、各ジョブの処理に沿って、多くのユーティリティ API が呼び出され、そのような API 内からのログ エントリにはジョブ情報がありません。log4j はスレッド ID を出力するので、これはさまざまなジョブのログを区別する方法ですが、ユーティリティ API ログにジョブ ID を追加する最も簡単で最良の方法は何でしょうか?
正しい方向に進んでいるかどうかわからない、大まかに2つの考えがあります。
- スレッド名を自分のジョブ ID に置き換える方法があれば、log4j のデフォルトのスレッド プレフィックスで問題ないと思います。
- または、ロガーがジョブ情報を出力できるように、ロガーを入力として受け取るユーティリティ メソッドを作成する必要がありますか?
アドバイスしてください、ありがとう。