java.util.loggingパッケージ
Java1.4からあったらしいが、仕事ではlog4jばかりなので使う機会がなかった。
import java.io.IOException; import java.util.logging.FileHandler; import java.util.logging.Level; import java.util.logging.Logger; import java.util.logging.SimpleFormatter; public class LoggingTest { public static void main(String[] args) { FileHandler handler = null; try { handler = new FileHandler("log/test.log", true); } catch (SecurityException | IOException e) { e.printStackTrace(); } handler.setFormatter(new SimpleFormatter()); Logger logger = Logger.getAnonymousLogger(); logger.setLevel(Level.ALL); logger.addHandler(handler); logger.severe("SEVEREです"); logger.warning("WARNINGです"); logger.info("INFOです"); logger.config("CONFIGです"); logger.fine("FINEです"); logger.finer("FINERです"); logger.finest("FINESTです"); if (handler != null) { handler.close(); } } }
HandlerがLog4JのAppenderのような位置づけになっていて、
このように書くとRollingFileAppenderのようになる。
// 1000行ごとに3世代ファイルを切り替える指定 new FileHandler("log/test%g.log", 1000, 3, true);
SimpleFormatterを使うと、こんな感じに2行でログ出力される。
3 19, 2012 10:12:51 午後 sandbox.java.util.logging.LoggingTest main 重大: SEVEREです 3 19, 2012 10:12:51 午後 sandbox.java.util.logging.LoggingTest main 警告: WARNINGです 3 19, 2012 10:12:51 午後 sandbox.java.util.logging.LoggingTest main 情報: INFOです 3 19, 2012 10:12:51 午後 sandbox.java.util.logging.LoggingTest main 構成: CONFIGです 3 19, 2012 10:12:51 午後 sandbox.java.util.logging.LoggingTest main 普通: FINEです 3 19, 2012 10:12:51 午後 sandbox.java.util.logging.LoggingTest main 詳細: FINERです 3 19, 2012 10:12:51 午後 sandbox.java.util.logging.LoggingTest main 最も詳細: FINESTです
ちょっと違和感があるが、色々余計な情報を出しすぎて肝心のログ内容が右スクロールしないと見れなかったりするので、これはこれでありなのかも。ただLEVELは日本語でだすと何か間抜けな感じ。