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 から一手間かける価値はある。
コメント