アプリケーション現在、開発中のいくつかの独立したライブラリコードを実行して、PrintWriter経由でstdoutにログの出力を出力します。さらに、ライブラリによって処理されるタスクは、別々のスレッドで実行されます。これらのログを無視する(ログがコンソールに表示されないようにする)ことが可能かどうかを調べたいと思います。しかし、私はライブラリコードを直接変更することはできませんので、簡単な解決方法は問題になりません。子スレッドによって生成されたログを無視する
乾杯!
アプリケーション現在、開発中のいくつかの独立したライブラリコードを実行して、PrintWriter経由でstdoutにログの出力を出力します。さらに、ライブラリによって処理されるタスクは、別々のスレッドで実行されます。これらのログを無視する(ログがコンソールに表示されないようにする)ことが可能かどうかを調べたいと思います。しかし、私はライブラリコードを直接変更することはできませんので、簡単な解決方法は問題になりません。子スレッドによって生成されたログを無視する
乾杯!
どちらがいいですか?正確には、いくつかのロギングフレームワークを使用していますか?それはちょうどSystem.out
を使用してコンソールにものを印刷する場合、それは基本的にはであり、Poorly Written Library(tm)です。その場合は、System Out and Err redirected to SLF4Jを使用してをslft4jにリダイレクトするだけです。基本的には、System.setErr()
とSystem.setOut()
を使用してデフォルトコンソールを上書きします。
ロギングフレームワーク(おそらくjava.util.logging
)を使用しているライブラリでは、使用するロガー/カテゴリを特定し、ロギングフレームワークでそれらをフィルタリングしてみてください。
スレッドについては何も言及していません。ログ/コンソールの出力を現在のスレッドに基づいてフィルタリングするのはちょっと難しいですが、ロギングフレームワークではなくロガー階層を使用してください。
ライブラリは[ECJ](http://cs.gmu.edu/~eclab/projects/ecj/)として知られており、研究目的で使用しています。残念ながら、これはどのロギング機能にも依存せず、System.outを使用してコンソールに直接印刷します。 – voo
@voo:ECJのソースコードを見てきました。あなたは正しいです、 'System.out' /' err'を直接使用します。 SLF4Jで[System Out and Err SLF4Jにリダイレクト](http://projects.lidalia.org.uk/sysout-over-slf4j/index.html)を試してみてください。私の更新も見てください。 –
ECJがラップされた 'System.out.write'呼び出しを使用するため、SLF4JにリダイレクトされたSystem OutとErrは機能しません。この[FAQ](http://projects.lidalia.org.uk/sysout-over-slf4j/faq.html#writingConsole)を参照してください。 – voo