2007-08-29

Java1.4のログAPIで簡単にログファイル出力

Webアプリケーションなんかの場合はコンテナの管理下にあったりするログファシリティだが、実行可能jarにしてあってcronで起動するようなバッチジョブをjavaで書いたときなんかはやはり自分で設定してやらないと話にならないので、Java 1.4の標準ログAPIを使ってログを残すための一番簡単な方法をメモする。

カスタムの logging.properties ファイルは下記の通り。

handlers = java.util.logging.FileHandler # ログの出力先はファイル
java.util.logging.FileHandler.limit = 1048576 # ひとつのログファイルは最大1MBくらい
# ホームディレクトリの logs/MyBatchJob.log.番号 にログを出力
java.util.logging.FileHandler.pattern = %h/logs/MyBatchJob.log
# ログローテーションは最近の10個まで
java.util.logging.FileHandler.count = 10
# ログの出力形式は普通で
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
# ログはファイルに追記する(これをtrueにしないと毎回上書きされてしまう)
java.util.logging.FileHandler.append = true
# デフォルトのログ出力レベルはWARNING以上
.level= WARNING
# "mt.batch.job.Component" ロガーの出力レベルはINFO以上
my.batch.job.Component.level=INFO


バッチジョブのクラスでは下記のように Loggerを使う。

package my.batch.job;

public class Component {
static Logger logger = Logger.getLogger("my.batch.job.Component");
static void main(String[] args) {
try {
process();
logger.finest("Batch process done.");
}
catch (Exception ex) {
logger.log(Level.SEVERE, "Exception occured", ex);
}
}
}


あとはシステムプロパティ java.util.logging.config.file に設定ファイル名を指定してプログラムを実行してやると、指定された場所の指定されたファイルに指定されたレベル以上のログが出力される。

$ java -Djava.util.logging.config.file=logging.properties -jar MyBatchJob.jar

0 件のコメント:

コメントを投稿

<< ホーム