SLF4J と Log4J バックエンドを使用しています。
私は、キューから「タスク」を取得し、別のスレッドでタスクを実行するスタンドアロンの Java サービスを持っています(問題がある場合は、Akka Actors)。ログメッセージをタスクごとのログファイルに送信したい (そのため、すべてのタスクが独自のログファイルにログインし始めます)。
私の要件は次のとおりです。
- ログメッセージとともにタスク ID を暗黙的に渡す
- その ID でログに記録するファイルを選択します
- タスクの終了時に ID を削除して、後続のタスクが誤って間違ったファイルにログを記録しないようにする
これまでのところ、いくつかの基準でタスクを「認識する」独自のログ アペンダーを作成する必要があるようです (タスク ID をロガーに簡単に渡す方法がわからず、信頼できないため、これは大きな問題です)。 ThreadLocal は、一部のタスクがスレッド プール/fork-join を開始する可能性があるため、スレッド コンテキストの継承が複雑になるため)
私のために働くかもしれない既存のロギング実装を知っていますか? Log4Jの拡張機能でしょうか?