1

IBM Websphere 7 に展開された非常に大きな Java Web アプリケーションがあり、すべての例外キャッチ ブロックは System.out.println を使用して例外をログに記録します。WAS プロファイルに展開されたすべてのアプリケーションの System.out.println のすべての出力が出力されます。 WAS SystemOut.log ファイル。

WAS 上のすべてのアプリケーションを、SystemOut.log ではなく、別のログ ファイルに記録する必要があります。

Log4j はアプリケーションと統合されていないため、有効化には時間がかかります。

WAS上でアプリケーションごとにSystem.out.printlnの出力先を変更するテクニックはありますか?

4

3 に答える 3

1

この回答済みのスレッドでは、解決策はSystemクラスのoutオブジェクトをオーバーライドして、log4jアペンダーを使用することに依存しています。これは素晴らしいアイデアだと思います。

StdOutErrLog

于 2012-11-08T10:16:33.360 に答える
1

すべての例外キャッチ ブロックは、System.out.println を使用して例外をログに記録します。

これをしないでください!ロギング フレームワークを使用します。

Log4j はアプリケーションと統合されていないため、有効化には時間がかかります。

それなら、こんなくだらないアプリケーションを作った人を見つけて、必要な変更を実装させてください。

于 2012-11-08T09:49:16.567 に答える
0

質問へのコメントで指摘されているように、 System.out と System.err がグローバルに移動する場所を変更できますが、アプリごとに実行したい場合は、私が考えることができる唯一の解決策は使用することですAspectJ などの AOP フレームワークを使用して、関連するクラス内のすべての println 呼び出しをインターセプトし、それらを問​​題のクラスに固有のロガーに転送します。

于 2012-11-08T09:57:25.170 に答える