柔軟な出力形式が可能
テキスト形式の出力はも、HTML、XMLのファイル出力、メール送信
6段階のログレベルを提供
ログの重要度に対してレベル付けすることができ、設定ファイルのパラメータでログ出力するレベルを簡単に変更できる。
外部の設定ファイル
ライブラリから分離した設定ファイルとして、プロパティファイル(log4j.properties)、またはXMLファイルで設定することが可能です。
これによって、リリース向けビルド時に、環境に合わせた設定ファイルに差し替えるだけでログ出力をコントロールできます。
設定ファイルの構成
Logger
名前
Loggerに名前を付けます。ピリオドで区切ることで階層構成(親子関係)を作ることができます。デフォルト設定では、子Loggerのログは親Loggerに伝搬します。
ログレベル
6段階のログレベル(FATAL>ERROR>WARN>INFO>DEBUG>TRACE)の中から設定します。
Appender
カンマ区切りで複数指定できます。複数指定できるのでログを、コンソールとファイルに同時に出力することが可能です。これについては、後述します。
Appener
出力形式の設定をします。コンソール、ファイル、Syslogやメール送信などがあり多彩な出力が可能です。
名前
Appenderに名前を付けます。この名前とLoggerのAppender設定が関連づきます。
出力形式(+各種オプション)
Appender一覧
Layout(+各種オプション)
Layoutクラスの指定と、各Layoutクラスのオプションを設定します。これについては、後述します。
Layout
Appenderに対して出力レイアウトを設定します。
レイアウトの設定
●log4j.propertiesの場合
log4j.appender.アペンダ名.layout = レイアウトクラス名
log4j.appender.アペンダ名.layout.ConversionPattern = レイアウトパターン
アペンダ名「A1」の設定例
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.Target = System.out
log4j.appender.A1.layout = org.apache.log4j.PatternLayout レイアウトクラス設定
log4j.appender.A1.layout.ConversionPattern=%d{HH:mm:ss,SSS} %-5p %c – %x:%m%n レイアウトパターン設定
●log4j.xmlの場合
アペンダ名「A1」の設定例
レイアウトクラス一覧
レイアウトクラス 概要
org.apache.log4j.SimpleLayout シンプルなレイアウト。デフォルトレイアウト
org.apache.log4j.TTCCLayout 時間、スレッド名、カテゴリ名、メッセージを出力する。
org.apache.log4j.HTMLLayout HTML形式で出力する。
org.apache.log4j.XMLLayout XML形式で出力する。
org.apache.log4j.PatternLayout ユーザでレイアウトを指定できる。指定可能なレイアウトパターンは以下を参照して下さい。
指定可能なレイアウトパターン
レイアウトパターン 概要
%c カテゴリー名。 %c{1} と記述した場合、一番「下の」 レベルのみ出力できる。
「sample.pg.LoggerSample」の場合、「LoggerSample」となる。
%C ログを生成したクラス名。カテゴリ名では無くクラス名。
%C{1} と記述した場合、一番「下の」 レベルのみ出力できる。
「sample.pg.LoggerSample」の場合、「LoggerSample」となる。
%d 日付。 %d{yyyy-MMM-dd HH:mm:ss,SSS} の様に詳細に指定できる。
%l %F、%L、%Mを纏めた情報。※性能に問題あり。
%F ログを生成したソースファイル名。※性能に問題あり
%L ログを生成した箇所のソースの行番号。※性能に問題あり
%M ログを生成したメソッドの名前。※性能に問題あり
%m ログメッセージ
%x NDC でpushした値
%X{key} MDC に保存された key の値
%n 改行コードを生成する。
%p ログレベル(FATALやINFOなど)
%r アプリケーションが開始してからの通算時間(ミリ秒)
%t ログを生成したスレッド名