標準ロギングAPI

プロパティ読むのに起動オプションが必要と。

http://d.hatena.ne.jp/nowokay/20080723#1216831644

勘違いしている(?)みたいだけど,起動オプションで指定するとデフォルト値を変更できるというだけであって,別にいくらでも好きなプロパティファイルを切り替えることはできますよ.

実行バイナリをまったくいじらずに外部からログ設定をするという意味でシステムプロパティの有効性はあるとは思う.

一番簡単なログ設定ファイルの変更方法はログアクセスする前にSystem.setProperty(key,value)をつかって設定値をセットしてあげること.Loggerの初回起動時にプロパティがあるかどうか調べていますので.


もちろんコードでも自由に切り替えることが出来ます.

package logtest;

import java.io.IOException;
import java.util.logging.LogManager;
import java.util.logging.Logger;

public class NewMain {

    public static void main(String... args) throws IOException {
 
        System.err.println("######## 設定ファイル読み込み");
        LogManager.getLogManager().readConfiguration(
                NewMain.class.getResourceAsStream("/logtest/hoge.properties"));
        Logger logger1 = Logger.getLogger(NewMain.class.getName());

        logger1.info("info");
        logger1.fine("fine");
        logger1.warning("warning");

        
        System.err.println("######## 設定ファイル再読み込み");
        LogManager.getLogManager().readConfiguration(
                NewMain.class.getResourceAsStream("/logtest/hoge2.properties"));
        Logger logger2 = Logger.getLogger(NewMain.class.getName());

        logger2.info("info");
        logger2.fine("fine");
        logger2.warning("warning");
    }
}