2012-03-12 17 views
0

私は多くのWorkerスレッドを使用してコンテンツを処理するアプリケーションを開発中です。これらのスレッドはそれぞれ、特定の命名規則に従い、主に作成時に各スレッドが渡される1つのString値に依存して、独自のログファイルに書き込むことになっています。Log4Jカスタムロガー(スレッドによるログ)

log4jでコンパイル時にすべての可能なアペンダーをlog4j構成に書き込むことを含まないlog4jでこれを行う方法が見つかっていません。これは私のアプリケーションではほとんど受け入れられません。このプロジェクトには、すでに書き直したくないLoggerオブジェクトへの参照がたくさん含まれています。

これまでのところ、私はLoggerを実装するクラスを作成し始めましたが、MyLoggerからLoggerへのキャストは行われません。 LoggerからMyLoggerへの参照を変更することはまさにロケット科学ではありませんが、私の実装ではlog4jに非常に近い状態を保つことを望んでいました。

log4jでこれを行う簡単な方法はありますか?そうでない場合は、誰かがあなた自身のログ実装を書く方法に関するチュートリアルやチュートリアルを持っていますか?

+0

これはあなたの以前の質問ですか?[this](http://stackoverflow.com/questions/9630616) –

答えて

0

ログイベントをスレッドごとに異なるファイルに追加する独自のAppenderを実装できます。このアペンダーは、ロギングコードを変更せずにLog4J構成で登録することができます。 Thisチュートリアルはあなたの問題と似ています。

1

に切り替えると、SiftingAppenderを利用できます。それはあなたが望むものを正確に行います:いくつかの基準に基づいてログを別々のアペンダーに分けます。ファイル。デフォルトでは(おそらく良いアイデア)が使用されますが、あなた自身で簡単にDiscriminatorと書くことができます。

Log4JからLogbackに切り替えることには問題がありません。log4j-over-slf4jです。基本的には、Log4J APIを使用して、1行のコードを変更せずに切り替えることができます。

関連する問題