はじめに
http://blogs.yahoo.co.jp/dk521123/33200747.htmlの「サンプル : ログフォーマット変更」で、 ログフォーマットして、ログファイルを出力したら、XML形式で出力されてしまったので ログフォーマットしてテキスト形式でログファイル出力する方法を調べてみた。
サンプル
* ちなみに、設定ファイルは不要です
ログフォーマット:CustomLogFormatter.java
* SimpleFormatterを継承させるpackage com.log; import java.text.SimpleDateFormat; import java.util.Date; import java.util.logging.Level; import java.util.logging.LogRecord; import java.util.logging.SimpleFormatter; public class CustomLogFormatter extends SimpleFormatter { private final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); public String format(LogRecord logRecord) { final StringBuffer stringBuffer = new StringBuffer(); stringBuffer.append(this.dateFormat.format(new Date(logRecord.getMillis()))); stringBuffer.append(" "); Level level = logRecord.getLevel(); if (level == Level.FINEST) { stringBuffer.append("FINEST"); } else if (level == Level.FINER) { stringBuffer.append("FINER "); } else if (level == Level.FINE) { stringBuffer.append("FINE "); } else if (level == Level.CONFIG) { stringBuffer.append("CONFIG"); } else if (level == Level.INFO) { stringBuffer.append("INFO "); } else if (level == Level.WARNING) { stringBuffer.append("WARN "); } else if (level == Level.SEVERE) { stringBuffer.append("SEVERE"); } else { stringBuffer.append(Integer.toString(logRecord.getLevel().intValue())); stringBuffer.append(" "); } stringBuffer.append(" "); stringBuffer.append(logRecord.getLoggerName()); stringBuffer.append(" - "); stringBuffer.append(logRecord.getMessage()); stringBuffer.append("\n"); return stringBuffer.toString(); } }
SampleLogger.java
* SimpleFormatterを継承させるpackage com.log; import java.io.IOException; import java.util.logging.FileHandler; import java.util.logging.Level; import java.util.logging.Logger; public class SampleLogger { public static void main(final String[] args) throws SecurityException, IOException { final Logger logger = Logger.getLogger("SampleLogger"); FileHandler fileHandler = new FileHandler( "SampleLogging%u.%g.log", // 出力ログファイル名は"SampleLogging.log 10000, // 最大バイト数 10, // ログファイル数 true); // 追加モード // テキスト形式で、CustomLogFormatterを設定 fileHandler.setFormatter(new CustomLogFormatter()); // ログフォーマット設定 // ログの出力先を追加 logger.addHandler(fileHandler); // ログの出力レベルを設定(ここではすべて出力するように設定) logger.setLevel(Level.ALL); logger.finest("Hellow World1"); logger.finer("Hellow World2"); logger.fine("Hellow World3"); logger.config("Hellow World4"); logger.info("Hellow World5"); logger.warning("Hellow World6"); logger.severe("Hellow World7"); } }
出力結果
SampleLogging0.0.log
2014-03-22 23:12:52.906 FINEST SampleLogger - Hellow World1 2014-03-22 23:12:52.906 FINER SampleLogger - Hellow World2 2014-03-22 23:12:52.906 FINE SampleLogger - Hellow World3 2014-03-22 23:12:52.906 CONFIG SampleLogger - Hellow World4 2014-03-22 23:12:52.906 INFO SampleLogger - Hellow World5 2014-03-22 23:12:52.937 WARN SampleLogger - Hellow World6 2014-03-22 23:12:52.937 SEVERE SampleLogger - Hellow World7
参考文献
http://careleaves.blog69.fc2.com/blog-entry-9.htmlhttp://javaflavor.hopto.org/blog/2012/12/21/java-ee-and-java-util-logging/