Log4J
Log4Jとは
- Jakartaプロジェクトで開発が進められているJavaプログラム用のログAPIである。
- ログの出力先を様々に設定できる。
- ファイル、OutputStream、java.io.Writer、リモートLog4Jサーバ、リモートUnix Syslogデーモン、NTイベントログなど
- Log4Jには以下の3つの主要コンポーネントがある。
- Logger - ロギングを行う部分をグループ化し必要なグループのログだけを出力することを可能にする。カテゴリーに優先順位を付けることにより様々な出力方法を指定できる。
- Appender - ログの出力先を指定する。
- Layout - ログの出力フォーマットを指定する。
- Log4Jは以下のログレベルを標準提供している(レベルが高い順)。利用者が任意のログレベルを追加することも可能。
- FATAL - 致命的なエラー。プログラムの異常終了を伴うようなもの。
- ERROR - 予期しないその他の実行エラー。
- WARN - 警告。廃要素のAPIの使用やAPIの不適切な使用、エラーに近い事象など。
- INFO - 情報。実行時の何らかの注目すべき事象(開始や終了など)。
- DEBUG - デバッグ用の情報。システムの動作状況に関する詳細な情報。
- TRACE - デバッグ情報よりも更に詳細な情報。
- 使うときのざっくりした流れは以下な感じ。
- 1.Loggerを作成する
- 2.Appenderを作成してLoggerにぶら下げる
- 3.Layoutを作成して、Appenderにぶら下げる
- 4.ログ出力をする。
- 上記手順の1~3(2~3?)は設定ファイル(log4j.properties)で外部ファイル化できる。
サンプルコード
- 上記までに学んだ内容でログ出力を行うサンプルコードを書いた。
- Log4jSample.java
package sandbox.log4j.sample1;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class Log4jSample {
public static void main(String[] args) {
Log4jSample mainApp = new Log4jSample();
mainApp.execute();
}
public void execute() {
// Loggerインスタンスの生成.
Logger logger = Logger.getLogger(Log4jSample.class);
// log4j.propertiesを読み込む
PropertyConfigurator.configure("bin/sandbox/log4j/sample1/log4j.properties");
// 各レベルでログを出力
logger.trace("TRACEログ");
logger.debug("DEBUGログ");
logger.info("INFOログ");
logger.warn("WARNログ");
logger.error("ERRORログ");
logger.fatal("FATALログ");
}
}
# Appenderの定義.
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %5p %c{1} - %m%n
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=C:\\Log4JTest\\Log4jSample.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d %5p %c{1} - %m%n
# ルートカテゴリーの定義.
log4j.rootCategory=INFO,stdout,file
- 実行するとコンソールには以下のとおりログが出力される。
2011-09-22 12:07:28,144 INFO Log4jSample - INFOログ
2011-09-22 12:07:28,144 WARN Log4jSample - WARNログ
2011-09-22 12:07:28,144 ERROR Log4jSample - ERRORログ
2011-09-22 12:07:28,144 FATAL Log4jSample - FATALログ
- また、C:\\Log4JTest\\Log4jSample.logのファイルに上記と同じ内容のログが出力される。
- サンプルコードを書いて
- rootCategory?rootLogger?という感じ。カテゴリ、ロガー、階層、log4j.propertiesの書き方などがまだよくわからん。
- 以下のように明示的にlog4j.propertiesの読み込みを記述しないと上手くいかなかった。(Webアプリケーションの場合クラスパスが通った場所にlog4j.propertiesを書いておけばこのようなコードは不要だったような気がしたが・・・)
// log4j.propertiesを読み込む
PropertyConfigurator.configure("bin/sandbox/log4j/sample1/log4j.properties");
参考サイト
最終更新:2011年11月08日 23:51