私は愚かなJavaロギングの問題を抱えています:私は自分のアプリケーション構成ファイルからロギング設定をロードしていますが、ファイルを読み込んだ後は何もログに記録しません。追加のアプリケーション設定を除いてネット上にあります。これを削除することも役に立ちません。 "初期化中の..."というログ行はうまく表示されますが、 "開始アプリ"とそれ以降のメッセージはコンソールには記録されず、ログファイルも作成されません。私はここで何が欠けていますか?プロパティファイルを使用してJavaロギングを設定するにはどうすればよいですか? (java.util.logging)
ロガーのコードは次のようになります。
...
Logger log = Logger.getLogger("myApp");
log.setLevel(Level.ALL);
log.info("initializing - trying to load configuration file ...");
Properties preferences = new Properties();
try {
FileInputStream configFile = new FileInputStream("/path/to/app.properties");
preferences.load(configFile);
LogManager.getLogManager().readConfiguration(configFile);
} catch (IOException ex)
{
System.out.println("WARNING: Could not open configuration file");
System.out.println("WARNING: Logging not configured (console output only)");
}
log.info("starting myApp");
...
そして、これは、設定ファイルである:
appconfig1 = foo
appconfig2 = bar
# Logging
handlers = java.util.logging.FileHandler, java.util.logging.ConsoleHandler
.level = ALL
# File Logging
java.util.logging.FileHandler.pattern = %h/myApp.log
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.FileHandler.level = INFO
# Console Logging
java.util.logging.ConsoleHandler.level = ALL
これはreadConfiguration行と何か関係があります。私はこれをデバッガで処理し、LogManagerのすべてのプロパティはこの呼び出し後にクリアされます。 – VolkA
ああ、持っている - 同じ入力ストリームを2回使用しているので、configFile.reset()を使用してその位置を変更する必要があります。そうしないと、loadConfiguration()呼び出しには何も読み込まれません。 Btw。私の作業コードからのコピーエラーです)。 – VolkA