2010-11-27 3 views
5

私は外部ライブラリを使用しているJavaプログラムを持っています。メインプログラムはlog4jを使用してメッセージを記録し、ライブラリはjava.util.loggingを使用します。java.util.loggingをファイルにリダイレクトする方法は?

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

すべてログメッセージを外部ライブラリからファイルにリダイレクトします。私はlogging.propertiesファイルとそれを実行しようとしました:コンソールに登場し続け残念ながら、外部ライブラリからのメッセージをログ

System.setProperty("java.util.logging.config.file", "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 

このファイルはで初期化されます。 slf4jのようなものを使用して、java.util.loggingのログメッセージを傍受する必要がありますか?

ありがとうございます。

+0

重複するhttp://stackoverflow.com/questions/751736/how-to-get-java-logger-output-to-file-by-default –

答えて

11

ここに私のプログラムのコードがあります。これは自動回転も行います。 configクラスは、自分のもので、プロパティファイルから読み込まれます。それを自分の値で置き換えることができます。

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); 

メモこれはスタンドアロンプ​​ログラム用です。どのアプリケーションサーバーにも独自のログ構成ツールがあります。ダイナミックデバッグモードが必要な場合は、プログラムはフォーマッタとレベルをオンザフライで変更することもできます。

+0

ワウありがとう、これは完璧に機能しました! – gulbrandr

関連する問題