サンプル : ログファイル出力
以下の関連記事のサンプル「サンプル:「finest」~「severe」が出力(設定ファイル使用)」で 設定ファイルを変更するだけなので、サンプルプログラムは省略。http://blogs.yahoo.co.jp/dk521123/33200578.html
logger.properties
* 出力ログファイル名「SampleLoggingX.X.log」、ログ・ローテーションの上限個数は10個* 「handlers=java.util.logging.ConsoleHandler, java.util.logging.FileHandler」がポイント
handlers=java.util.logging.ConsoleHandler, java.util.logging.FileHandler .level=FINEST java.util.logging.FileHandler.level=FINEST java.util.logging.FileHandler.pattern=SampleLogging%u.%g.log java.util.logging.ConsoleHandler.formatter=com.log.CustomLogFormatter java.util.logging.FileHandler.limit=10000000 java.util.logging.FileHandler.count=10 java.util.logging.FileHandler.append=true java.util.logging.FileHandler.encoding=UTF-8
参考文献
FileHandlerについて
http://struts.wasureppoi.com/util/04_file_handler.htmlサンプル : ログフォーマット変更
CustomLogFormatter.java
package com; import java.text.SimpleDateFormat; import java.util.Date; import java.util.logging.Formatter; import java.util.logging.Level; import java.util.logging.LogRecord; public class CustomLogFormatter extends Formatter { private final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); @Override 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(); } }
logger.properties
handlers=java.util.logging.ConsoleHandler, java.util.logging.FileHandler .level=FINEST java.util.logging.ConsoleHandler.level=FINEST java.util.logging.ConsoleHandler.formatter=com.CustomLogFormatter java.util.logging.FileHandler.level=FINEST java.util.logging.FileHandler.pattern=SampleLogging%u.%g.log java.util.logging.ConsoleHandler.formatter=com.CustomLogFormatter java.util.logging.FileHandler.count=10
SampleLogger.java
package com; import java.io.IOException; import java.io.InputStream; import java.util.logging.LogManager; import java.util.logging.Logger; public class SampleLogger { private static final String LOGGING_PROPERTIES = "logger.properties"; static { InputStream inStream = null; try { ClassLoader classLoader = SampleLogger.class.getClassLoader(); inStream = classLoader.getResourceAsStream(LOGGING_PROPERTIES); LogManager.getLogManager().readConfiguration(inStream); } catch (Exception ex) { ex.printStackTrace(); } finally { if (inStream != null) { try { inStream.close(); } catch (IOException e) { e.printStackTrace(); } } } } public static void main(final String[] args) { final Logger logger = Logger.getLogger("SampleLogger"); 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"); } }
出力結果
コンソール出力
2014-03-21 22:52:01.109 FINEST SampleLogger - Hellow World1 2014-03-21 22:52:01.203 FINER SampleLogger - Hellow World2 2014-03-21 22:52:01.203 FINE SampleLogger - Hellow World3 2014-03-21 22:52:01.203 CONFIG SampleLogger - Hellow World4 2014-03-21 22:52:01.203 INFO SampleLogger - Hellow World5 2014-03-21 22:52:01.203 WARN SampleLogger - Hellow World6 2014-03-21 22:52:01.203 SEVERE SampleLogger - Hellow World7
SampleLogging0.0.log
* XMLファイル形式で出力される!!!?(テキスト形式で出力方法は、下記の関連記事を参照のこと)<?xml version="1.0" encoding="windows-31j" standalone="no"?> <!DOCTYPE log SYSTEM "logger.dtd"> <log> <record> <date>2014-03-21T22:52:01</date> <millis>1395409921109</millis> <sequence>0</sequence> <logger>SampleLogger</logger> <level>FINEST</level> <class>com.log.SampleLogger</class> <method>main</method> <thread>1</thread> <message>Hellow World1</message> </record> <record> <date>2014-03-21T22:52:01</date> <millis>1395409921203</millis> <sequence>1</sequence> <logger>SampleLogger</logger> <level>FINER</level> <class>com.log.SampleLogger</class> <method>main</method> <thread>1</thread> <message>Hellow World2</message> </record> <record> <date>2014-03-21T22:52:01</date> <millis>1395409921203</millis> <sequence>2</sequence> <logger>SampleLogger</logger> <level>FINE</level> <class>com.log.SampleLogger</class> <method>main</method> <thread>1</thread> <message>Hellow World3</message> </record> <record> <date>2014-03-21T22:52:01</date> <millis>1395409921203</millis> <sequence>3</sequence> <logger>SampleLogger</logger> <level>CONFIG</level> <class>com.log.SampleLogger</class> <method>main</method> <thread>1</thread> <message>Hellow World4</message> </record> <record> <date>2014-03-21T22:52:01</date> <millis>1395409921203</millis> <sequence>4</sequence> <logger>SampleLogger</logger> <level>INFO</level> <class>com.log.SampleLogger</class> <method>main</method> <thread>1</thread> <message>Hellow World5</message> </record> <record> <date>2014-03-21T22:52:01</date> <millis>1395409921203</millis> <sequence>5</sequence> <logger>SampleLogger</logger> <level>WARNING</level> <class>com.log.SampleLogger</class> <method>main</method> <thread>1</thread> <message>Hellow World6</message> </record> <record> <date>2014-03-21T22:52:01</date> <millis>1395409921203</millis> <sequence>6</sequence> <logger>SampleLogger</logger> <level>SEVERE</level> <class>com.log.SampleLogger</class> <method>main</method> <thread>1</thread> <message>Hellow World7</message> </record> </log>
参考文献
http://www.atmarkit.co.jp/ait/articles/0801/08/news128_3.htmlhttp://www.atmarkit.co.jp/ait/articles/0801/08/news128_4.html
関連記事
標準 java.util.logging を使ったログ機能 ~ログフォーマットしてテキスト形式でログファイル出力するには~
* XMLファイル形式で出力されるので、テキスト形式で出力する方法を調べてみたhttp://blogs.yahoo.co.jp/dk521123/33205569.html