[解決済み] プロパティファイルを使ってjavaのロギングを設定するには?(java.util.logging)
2023-05-11 20:43:40
質問
私は愚かな java のロギングの問題を抱えています。私のアプリ構成ファイルからロギング構成を読み込みますが、ファイルを読み込んだ後、何も記録しません (追加のアプリケーション構成を除いて、あなたがネット上で見つける例のようにかなり似ています - これを削除しても、助けにはなりません)。初期化中..."のログラインは問題なく表示されますが、"アプリの起動やその他のメッセージはコンソールに記録されず、ログファイル自体も作成されません。私はここで何を見逃しているのでしょうか?
Logger のコードは次のようなものです。
...
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
どのように解決するのですか?
さて、最初の直感はこちらです。
handlers = java.util.logging.FileHandler, java.util.logging.ConsoleHandler
.level = ALL
Java の prop ファイルパーサはそれほど賢くないので、これを処理できるかどうかわからない。 でも、もう一度ドキュメントを見てきます...。
その間に、試してみてください。
handlers = java.util.logging.FileHandler
java.util.logging.ConsoleHandler.level = ALL
更新
いや、もっとコーヒーが必要だったんだ。 気にしないでください。
もっと考えている間に、以下のメソッドを使うことができることに注意してください。 プロパティ のメソッドを使って、プロップファイルをロードし、プリントすることができることに注意してください:それは、javaがそのファイルで何を読むと考えているかを見るために、最小限のプログラムを書く価値があるかもしれません。
別の更新
この行は
FileInputStream configFile = new FileInputStream("/path/to/app.properties"));
には余分な末尾括弧があります。 これはコンパイルできません。 あなたが考えているクラスファイルを使用していることを確認してください。
関連
-
XXX型を囲むインスタンスがJavaでアクセスできない
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] Javaで配列に特定の値が含まれているかどうかを判断するにはどうすればよいですか?
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
-
[解決済み] Javaで配列を宣言し、初期化する方法は?
-
[解決済み] Javaで文字列値からenum値を取得する方法
-
[解決済み】JSP 2を使用して、JSPファイル内のJavaコードを回避するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Java の switch case 文で必要な定数式の問題の解決法
-
StringBuilderが投げるArrayIndexOutOfBoundsExceptionの探索
-
無効なメソッド宣言
-
配列定数は初期化子でのみ使用可能です。
-
アノテーション「@Retention」の役割
-
Junitのユニットテストエラー
-
git pull appears現在のブランチに対するトラッキング情報がありません。
-
ApiModel と @ApiModelProperty の使用法
-
[解決済み] IntelliJのクラスパスにプロパティファイルを追加する
-
[解決済み] Level.FINEのロギングメッセージが表示されないのはなぜですか?