log4j設定ファイルで出力logのフォーマットを色々いじってみた

自分用にmemoしとく。
log4jの設定ファイル(log4j.xml) の書き方サンプルと、代表的なパターン一覧。

log4j.xml

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

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

<!-- (1)appenderの設定 -->
<appender name="FILE" class="org.apache.log4j.FileAppender">
  <param name="File" value="log.txt" />
  <!-- (2)layoutの設定 -->
  <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%d [%p]:%c:%m%n" />
  </layout>
</appender>

<!-- (3)categoryの設定 -->
<category name="sample">
  <priority value="info" />
  <appender-ref ref="FILE" />
</category>

</log4j:configuration>

上記のフォーマットでのlog出力結果例

2012-12-02 20:49:33,821 [WARN]:sample.ExLog1:エラー:java.io.FileNotFoundException: test.txt (No such file or directory)
2012-12-02 20:49:33,824 [INFO]:sample.ExLog2:変数は10以上です。

■代表的なパターン一覧
%c ログ出力が行われたlogger名を出力。
%C クラスを出力。
%d 日時を出力。「%d{yyyy/mm/dd HH:mm:ss}」といった詳細指定も可能。
%F ファイル名を出力。
%l ソース名や行といった呼び出し位置を出力。
%L 行番号を出力。
%m メッセージを出力。
%M メソッド名を出力。
%n 改行文字を出力。
%p ログのレベル(Fatal/Errorなど)を出力。
%t ログを生成したスレッドを出力。
%x スレッドのNDC(ネスト化診断コンテキスト)を出力。スレッド固有の情報(セッションIDなど)を埋め込むことが可能。

※高負荷のパターン
 %C、%F、%l、%L、%Mの場合は処理負荷が高くなるため必要な時以外は使用しないように注意が必要。