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
最終更新:2011年05月07日 20:29