読者です 読者をやめる 読者になる 読者になる

「log4j」ConsoleAppender FileAppender DailyRollingFileAppender 使ってみた

Java log4j

log4j の ConsoleAppender FileAppender DailyRollingFileAppender 辺りのアペンダーを使ってみたので、その時のメモ。

[ 環境情報 ]
Windwos 7 SP1
Java SE 7
Apache log4j 1.2.17


1. 設定ファイルの作成 ( log4j.xml )

<?xml version="1.0" encoding="UTF-8"?>
<log4j:configuration debug="true" xmlns:log4j="http://jakarta.apache.org/log4j/">

<appender name="n1" class="org.apache.log4j.ConsoleAppender">
  <param name="Target" value="System.err"/>
  <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%m%n"/>
  </layout>
</appender>

<appender name="n2" class="org.apache.log4j.FileAppender">
  <param name="File" value="file.log" />
  <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%d : %m%n"/>
  </layout>
</appender>

<appender name="n3" class="org.apache.log4j.DailyRollingFileAppender">
  <param name="File" value="dailyrollingfile.log" />
  <param name="DatePattern" value="'.'yyyy-MM-dd-HH-mm" />
  <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%d : %m%n"/>
  </layout>
</appender>

<logger name="appender.console.ConsoleSample">
  <appender-ref ref="n1"/>
</logger>

<logger name="appender.file.FileSample">
  <appender-ref ref="n2"/>
</logger>

<logger name="appender.dailyrollingfile.DailyrollingfileSample">
  <appender-ref ref="n3"/>
</logger>

</log4j:configuration>

※ PatternLayout は出力日時とメッセージを出力するように設定
※ DailyRollingFileAppender は分単位でローテートするように設定


2. アペンダーを使用するクラスを作成する
■ ConsoleSample.java

package appender.console;

import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;

public class ConsoleSample {
	public static void main(String[] args) {
		Logger logger = Logger.getLogger(ConsoleSample.class);
		DOMConfigurator.configure("log4j.xml");
		logger.info("ConsoleSample INFO");
	}
}

■ FileSample.java

package appender.file;

import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;

public class FileSample {
	public static void main(String[] args) {
		Logger logger = Logger.getLogger(FileSample.class);
		DOMConfigurator.configure("log4j.xml");
		logger.info("FileSample INFO");
	}
}

■ DailyrollingfileSample.java

package appender.dailyrollingfile;

import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;

public class DailyrollingfileSample {
	public static void main(String[] args) {
		Logger logger = Logger.getLogger(DailyrollingfileSample.class);
		DOMConfigurator.configure("log4j.xml");
		logger.info("DailyrollingfileSample INFO");
	}
}


あとは、それぞれのクラスを実行する、それに応じた結果が得られるはずです。

ドキュメントは以下あたりになります。

・DOMConfigurator (Apache Log4j 1.2.17 API)
http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/DOMConfigurator.html
・ConsoleAppender (Apache Log4j 1.2.17 API)
http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/ConsoleAppender.html
・FileAppender (Apache Log4j 1.2.17 API)
http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/FileAppender.html
・DailyRollingFileAppender (Apache Log4j 1.2.17 API)
http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/DailyRollingFileAppender.html
・PatternLayout (Apache Log4j 1.2.17 API)
http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html

xml での書き方については、以下にちょろっと情報がある。

・Migrating from Log4j 1.x - Apache Log4j 2
http://logging.apache.org/log4j/2.x/manual/migration.html

以上です。