簡単なロギングならJava標準APIを利用すれば捗る

Java のプロジェクトでロギングをする場合、SL4J とか Logback、Log4J なんかを使うと思うのだけれど、ちょっとしたサンプルプログラムや検証用のプログラムにライブラリを組み込んだり、設定ファイルをカキカキするのは面倒くさい。

かといって、手ずからログファイルを書き出す処理を実装するのはばからしい。

こんな時には、Java標準APIのロギング(java.util.logging)を利用すると捗る。

http://www.atmarkit.co.jp/ait/articles/0801/08/news128.html

以下の様な感じ。

  • java.util.logging.FileHandler.pattern には、出力ファイルのパスを含むパターンを設定
  • java.util.logging.FileHandler.formatter に、XMLFormatter を指定すると、XMLでログが出力される

その他設定値は、このあたりなどを参考に。

import java.io.ByteArrayInputStream;
import java.util.logging.LogManager;
import java.util.logging.Logger;
 
public class LoggingSample {
    
    protected static final String LOGGING_CONFIG_STRING
        = "handlers=java.util.logging.ConsoleHandler, java.util.logging.FileHandler\n"
        + ".level=INFO\n"
        + "java.util.logging.ConsoleHandler.level=INFO\n"
        + "java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter\n"
        + "java.util.logging.FileHandler.pattern=/home/piroto/work/log/LoggingSample%u.log\n"
        + "java.util.logging.FileHandler.append=true\n"
        + "java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter\n"
        ;
 
    private static Logger logger = null;
    static {
        try {
            LogManager.getLogManager().readConfiguration(
                    new ByteArrayInputStream(LOGGING_CONFIG_STRING.getBytes("UTF-8")));
            logger = Logger.getLogger(LoggingSample.class.getName());
        } catch(Exception e){
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        LoggingSample me = new LoggingSample();
        me.test();    
    }

    public void test() {
        logger.info("TEST");
    }
}
 

結果

7 20, 2014 12:06:08 午後 LoggingSample test
情報: TEST

System.out.println から一手間かける価値はある。

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です