Restful + log4j

RESTfulプログラムのログ出力にcommons-logging+log4jを使ったのでメモ。

■環境
  • Java 6
  • Eclipse 3.6
  • Tomcat 6

■ライブラリについて

以下の2ファイルを使った。
  • commons-logging-1.1.1.jar
  • log4j-1.2.16.jar

それぞれ以下からダウンロード。展開したディレクトリ内から上記の2ファイルをlibディレクトリにコピーした。

Eclipseにて、ビルドパスにjarファイルを追加。

■サンプルソース

package ebi.sample;
 
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import org.apache.commons.logging.*;
 
@Path("/hello")
public class HelloWorld {
	public static Log log = LogFactory.getLog(HelloWorld.class); 

	@GET
	@Path("/log")
	@Produces(MediaType.APPLICATION_XML)
	public String Log() {
		String xml = "<result><code>0</code></result>";
		log.fatal("fatalメッセージ");
		log.error("errorメッセージ");
		log.warn("warnメッセージ");
		log.info("infoメッセージ");
		log.debug("debugメッセージ");
		log.trace("traceメッセージ");
		return xml;
	}
}

このサンプルを試す場合は、別途jax-rsの環境構築が必要。

■設定ファイル

WEB-INF/classにlog4j.xmlを作成。
以下は標準出力をINFO、ファイル出力をDEBUGに設定。
ログの出力先は「Tomcatインストールディレクトリ\logs\daily-log」に設定。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>

	<!-- コンソールにログを出力するConsoleAppenderをSTDOUTとして定義 -->
	<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender" >

		<!-- デフォルトのログレベル -->
		<param name="threshold" value="info"/>

		<!-- ログの出力形式を指定 -->
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%d %-5p [%t] (%F:%L) - %m%n"/>
		</layout>
	</appender>

	<!--決められた期間でログを別ファイルに切り替えて書き込む
		DailyRollingFileAppenderをDAILYとして定義 -->
	<appender name="DAILY" class="org.apache.log4j.DailyRollingFileAppender">
		<!-- ログのファイル名 -->
		<param name="file" value="logs/daily-log" /> 
		
		<!-- デフォルトのログレベル -->
		<param name="threshold" value="debug"/>
		
		<!-- 日付が変わる瞬間daily-log-2002-06-23のような形式で現在のログがリネーム -->

		<!-- すでにログが存在する場合、ファイルにログを追加 -->
		<param name="append" value="true" />

		<!-- ログの出力形式を指定 -->
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="'%c', '%p', '%d', '%m'%n" /> 
		</layout>

	</appender>
	
	<!-- ログの設定 -->
	<category name="ebi.sample.HelloWorld">
		<appender-ref ref="STDOUT" />
		<appender-ref ref="DAILY" />
	</category>

</log4j:configuration>

設定ファイルはappend,layout, categoryの3要素を設定。
他にroot要素が存在するが必要が無い場合は使わないようにする。



2011-05-07

タグ:

java RESTful
最終更新:2011年05月07日 20:29
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。