log4j.properties ファイルの例

log4jチュートリアルでは、log4jのXMLベースの設定方法を見ました。しかし、log4j.xmlは冗長なため、log4jフレームワークにはプロパティファイルからの読み込みオプションも提供されています。ただし、プロパティファイルには検証するための定義済みのスキーマがないため、注意が必要です。今日は、XML設定をプロパティベースの設定に変換する方法を見ていきます。

ルートロガー

マッチするロガーが存在しない場合に、ルート・ロガーが使用されます。次のようにXMLで定義されます。

<root>
	<priority value="DEBUG" />
	<appender-ref ref="file" />
	<appender-ref ref="console" />
</root>

以下のようにプロパティファイルで定義することができます。

log4j.rootLogger=DEBUG, file, console

コンマで区切られたリスト内の最初の値は、ルートロギングレベルの値です。他のすべての値はアペンダーです。

ログ4jのアペンダ

log4jでは、複数のアペンダーを使用することができます。以下には、コンソールログ用の1つのアペンダーとファイル用の別のアペンダーがあります。

<!-- console appender -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
	<param name="Target" value="System.out" />
	<layout class="org.apache.log4j.PatternLayout">
		<param name="ConversionPattern" value="%-5p %c{1} - %m%n" />
	</layout>
</appender>

<!-- rolling file appender -->
<appender name="file" class="org.apache.log4j.RollingFileAppender">
	<param name="File" value="logs/main.log" />
	<param name="Append" value="true" />
	<param name="ImmediateFlush" value="true" />
	<param name="MaxFileSize" value="10MB" />
	<param name="MaxBackupIndex" value="5" />

	<layout class="org.apache.log4j.PatternLayout">
		<param name="ConversionPattern" value="%d %d{Z} [%t] %-5p (%F:%L) - %m%n" />
	</layout>
</appender>

log4j.propertiesファイルでは、以下のように定義されます。

#Define console appender
log4j.appender.console=org.apache.log4j.ConsoleAppender
logrj.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-5p %c{1} - %m%n

#Define rolling file appender
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=logs/main.log
log4j.appender.file.Append=true
log4j.appender.file.ImmediateFlush=true
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=5
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d %d{Z} [%t] %-5p (%F:%L) - %m%n

log4jのプロパティファイルのアペンダーの形式は、log4j.appender.{appender_name}.{appender_config}です。MaxFileSizeやMaxBackupIndexなどのアペンダーの設定は、XMLの設定ファイルと同じです。

ログ4jのロガー

アペンダーと同様に、複数のロガーを持つことができます。XMLベースの設定の例としては、次のようなものがあります。

<logger name="com.scdev.log4j" additivity="false">
	<level value="WARN" />
	<appender-ref ref="file" />
	<appender-ref ref="console" />
</logger>

<logger name="com.scdev.log4j.logic" additivity="false">
	<level value="DEBUG" />
	<appender-ref ref="file" />
</logger>

これらはプロパティファイルでlog4j.logger.{logger_name}として定義されます。値には、ログレベルと使用するアペンダのリストが含まれています。

#Define loggers
log4j.logger.com.scdev.log4j=WARN, file, console
log4j.logger.com.scdev.log4j.logic=DEBUG, file, console

Log4jのロガーアダティブシティ

上記のロガーのXML設定には、アディティブな使用方法が示されています。これは、ロガー要素の属性です。以下に、log4jプロパティファイルの設定で使用する方法(log4j.additivity.{logger_name})が示されています。

#setting additivity
log4j.additivity.com.scdev.log4j=false
log4j.additivity.com.scdev.log4j.logic=false

上記に基づき、下記が私の最終的なlog4j.propertiesファイルです。

#Define root logger options
log4j.rootLogger=DEBUG, file, console

#Define console appender
log4j.appender.console=org.apache.log4j.ConsoleAppender
logrj.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-5p %c{1} - %m%n

#Define rolling file appender
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=logs/main.log
log4j.appender.file.Append=true
log4j.appender.file.ImmediateFlush=true
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=5
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d %d{Z} [%t] %-5p (%F:%L) - %m%n

#Define loggers
log4j.logger.com.scdev.log4j=WARN, file, console
log4j.logger.com.scdev.log4j.logic=DEBUG, file, console

#setting additivity
log4j.additivity.com.scdev.log4j=false
log4j.additivity.com.scdev.log4j.logic=false

Log4jのPropertyConfigurator

PropertyConfiguratorは、log4jの設定を行うために使用されます。もしファイル名がlog4j.propertiesであり、プロジェクトのクラスパスにある場合、これはオプションです。ロガーを使用する前に、設定を行う必要があります。以下にlog4jログを設定および使用する方法を示す簡単なプログラムがあります。

package com.scdev.log4j.main;

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

import com.scdev.log4j.logic.MathUtils;

public class Log4jExample {

	static{
		init();
	}
	
	private final static Logger logger = Logger.getLogger(Log4jExample.class);
	
	public static void main(String[] args) {

		logger.debug("My Debug Log");
		logger.info("My Info Log");
		logger.warn("My Warn Log");
		logger.error("My error log");
		logger.fatal("My fatal log");
				
	}

	/**
	 * method to init log4j configurations
	 */
	private static void init() {
		PropertyConfigurator.configure("log4j.properties");
	}

}

実行すると、コンソールログで以下の内容が表示されます。

WARN  Log4jExample - My Warn Log
ERROR Log4jExample - My error log
FATAL Log4jExample - My fatal log

同時に、以下の通りmain.logファイルに生成されるログを確認できます。

2016-05-14 00:34:11,994 +0530 [main] WARN  (Log4jExample.java:20) - My Warn Log
2016-05-14 00:34:11,995 +0530 [main] ERROR (Log4jExample.java:21) - My error log
2016-05-14 00:34:11,995 +0530 [main] FATAL (Log4jExample.java:22) - My fatal log

デバッグとインフォメーションのロガーは出力されないことに注意してください。最小のログレベルがWARNに設定されているためです。これでlog4jのプロパティファイルの使用例は終わりです。ログをお楽しみください!

コメントを残す 0

Your email address will not be published. Required fields are marked *