Log4J

概念

ロガー(カテゴリ)

Log4Jはロガーという概念で設定にラベルを付けることができるようになっている。カテゴリとも言われる。 実際にはロガーはカテゴリを継承していて、どっちでもいいっぽい

この単位で出力するログレベルを調整する。

ロガーはそのラベルをドットで繋ぐことでツリー構造にすることができる。 とくに明示しなければ、親階層の設定を継承することになる。

でもこれは設定する側の理論。使う側は親階層を想定して使えばよい、設定に存在していない設定を記述しても その記述がツリー構造に準ずる(前方一致ということか?)ものだったらその設定が適用される。

つまり

jp.co.hoge.piyo

でロガーを作って設定したならば、使う側は・・・

jp.co.hoge.piyo.fuga

で使ったとして、jp.co.hoge.piyo.fugaの設定が存在しなくてもjp.co.hoge.piyoの設定でログが吐かれるということ

全部のカテゴリーに適用される特別な設定があってそいつは

rootLogger

という設定項目で設定できる。昔のバージョンだとrootCategoryと呼ばれてたっぽい

出力の設定(appender)

使う側はロガーのラベルを目印に使うことになる。 つまりどういう状況でいつ出力するかをロガー側の設定が担当するということだ。

Log4Jではロガーから独立して出力の設定を書くことができる。 状況と時間はロガーで決定するので出力は出力する場所、フォーマット等を指定する。

ロガーと出力の組み合わせ

ロガーの設定と出力の設定に組み合わせる、ロガーに対して複数の出力設定を組み合わせることができる。 だからコンソールにも吐くしファイルにも吐くということができる。

設定

Log4Jの設定は設定ファイルlog4j.propertiesに書く

実際の設定(日次回転)

{code} /var/log/hoge/piyo.log {/code} みたいな位置にログを吐きたいとする。そしてこれを日次でファイルを分けたいとすると・・・

まずロガーを用意する。

log4j.logger.jp.fuga=INFO, FG

loggerというキーワードに続き、ここではjp.fugaというロガーを用意して。出力するログレベルをINFOに設定。まだ作ってないが出力をFGというものにする。

出力の準備はできた。INFO以上のログがFGに出力されるということになった。逆にロガーjp.fugaを使ってDEBUGレベルのログを吐いてもFGには出力されない

漠然とFGに吐くということを書いたが、ここから具体的にどうするのかを設定する。

log4j.logger.jp.fuga=INFO, FG
log4j.appender.FG=org.apache.log4j.DailyRollingFileAppender
log4j.appender.FG.File=/var/log/hoge/piyo.log
log4j.appender.FG.DatePattern='.'yyyy-MM-dd
log4j.appender.FG.Append=true
log4j.appender.FG.layout=org.apache.log4j.PatternLayout
log4j.appender.FG.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss} - %m%n

このように設定する。

  • 1行目はさっき記述した、ロガー設定、その下が出力のFGの設定になる。
  • 2行目は日次でファイルを分けるという設定。appenderキーワードに続き任意の出力設定名を記述(今回ならばFG)しそこに出力のクラス名を設定する。
  • 3行目は出力するファイル位置
  • 4行目は日次でファイルを切る際のファイル名に付ける日付のパターン
  • 5行目はファイルに追記するかたちでログをとるか
  • 6行目はログに付加する情報をどのようにするかのクラス設定
  • 7行目は6行目で設定したクラスを使って具体的にどのようにログを並べるかを指定している

実際の設定(コンソール)

開発中はファイルに出力せず、コンソールに吐いてお手軽に済ますということをよくやる

その場合は↓こうなる。今回は

log4j.rootLogger=DEBUG, C
log4j.appender.C=org.apache.log4j.ConsoleAppender
log4j.appender.C.Target=System.out
log4j.appender.C.ImmediateFlush=true
log4j.appender.C.layout=org.apache.log4j.PatternLayout
log4j.appender.C.layout.ConversionPattern=%-5p %d [%t] %m%n

log4Jの各プロパティ

プロパティ 説明
logger loggerの設定の起点、この後ろにドットで繋げてロガーに対するラベルをくっつける log4j.logger.jp.piyo.hoge
logger.jp.piyo.hogeロガー本体。値はそのロガーの出力方法によって変わる

タグ

java/log4j.txt · 最終更新: 2017-10-10 11:32 by ore