7

外部ライブラリを使用する Java プログラムがあります。メイン プログラムは を使用log4jしてメッセージをログに記録し、ライブラリは を使用しますjava.util.logging

私の問題は、外部ライブラリとメイン プログラムからのログ メッセージがコンソールに混在していることです。

すべてのログ メッセージを外部ライブラリからファイルにリダイレクトしたいと考えています。logging.properties私はファイルでそれをやろうとしました:

handlers= java.util.logging.FileHandler
.level= INFO
java.util.logging.FileHandler.pattern = foo.log
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter

このファイルは次のように初期化されます。

System.setProperty("java.util.logging.config.file", "logging.properties");

残念ながら、外部ライブラリからのログ メッセージがコンソールに表示され続けます。slf4jからのログ メッセージを傍受するようなものを使用する必要がありますjava.util.loggingか?

お時間をいただきありがとうございます。

4

1 に答える 1

13

これが私のプログラムの1つからのコードです。これは自動回転も行います。構成クラスは、プロパティ ファイルから読み取った独自のものです。それを独自の値に置き換えるだけです。

Logger rootLogger = Logger.getLogger(""); 
logHandler = new FileHandler(config.getLogFile(), 
                             config.getLogRotateSize()*1024*1024, 
                             config.getLogRotateCount(), false); 
logHandler.setFormatter(new SimpleFormatter()); 
logHandler.setLevel(Level.INFO); 
rootLogger.removeHandler(rootLogger.getHandlers()[0]); 
rootLogger.setLevel(Level.INFO); 
rootLogger.addHandler(logHandler); 

これはスタンドアロン プログラム用であることに注意してください。どのアプリケーション サーバーにも、独自のログ構成ツールがあります。動的デバッグ モードが必要な場合、プログラムはフォーマッタとレベルをオンザフライで変更することもできます。

于 2010-11-27T17:04:46.723 に答える