Apache log4j はJavaのロギングユーティリティである。log4jは、Java Logging Frameworksのひとつである。log4jはログの出力先として、ファイル、標準出力、メール、ソケット、syslog(UNIX)、イベントログ(Windows)などに出力できる。

スポンサーリンク

Javaのロギング

Javaのロギング(ログ出力)には次のようなものがある。

ロギング 説明
Apache Commons Logging Javaのロギングのインタフェース
Apache Log4J Javaのロギング実装
java.util.logging Javaの標準ロギングAPI
SLF4J (Simple Logging Facade for Java) Javaのロギングインタフェース

Javaにはjava.util.loggingという標準ロギングAPIがある。本来は標準APIがあるならそれを使うべきであるが、このjava.util.loggingが使いづらく評判が悪かったため、実際にはApache Log4Jなどがよく使われている。

ログレベル

log4jは、6つのログレベルを標準で提供している。このほかに利用者が任意のログレベルを追加することもできる。

ログレベル 説明
FATAL 致命的なエラー
ERROR エラー
WARN 警告
INFO 情報
DEBUG デバッグ情報
TRACE トレース情報

設定ファイル

log4jは、2つの方法で設定が可能である。ひとつはプロパティファイル、もうひとつはXMLファイルである。両社とも3つの主要なコンポーネント(ロガー、アペンダ、レイアウト)について定義することができる。ファイルにより設定を行うため、log4jを使用しているアプリケーションを変更することなく、ロギングをon/offfできる。

ロガー(Logger)は論理的なログファイルであり、Javaアプリケーションはこれらの名前を意識する。ログレベルはロガーごとに設定できる。

アペンダ(Appenders)は具体的な出力処理を行う。アペンダにはさまざまな種類があり、それぞれ内容を表す名前がついている。

レイアウト(Layouts)は1件ずつのログを成型するためのアペンダによって参照される。

Loggerの設定

Loggerの設定では、Loggerごとにログ出力レベルと使用するAppenderの名前を設定する。

log4j.logger.ロガー名=[ログ出力レベル|INHERITED],アペンダ名[,アペンダ名...]

RootLoggerで優先度を設定しておけば、それを継承することができる。

# RootLogger
log4j.rootLogger=FATAL

# Logger
log4j.logger.com.fc2web.itref=INHERITED

Appenderの設定

使用するAppenderとそのオプションの値を設定することができる。

log4j.appender.アペンダ名=アペンダのクラス名
log4j.appender.アペンダ名.オプション=値
log4j.appender.LOGFILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.LOGFILE.File=/usr/local/user1/user1.log
log4j.appender.LOGFILE.DatePattern='.'yyyy-MM-dd
log4j.appender.LOGFILE.layout=org.apche.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d [MyApp] %-5p %t %F:%L %m %n

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d %-5p %F:%L %m%n

Appenderの種類

アペンダ 説明
WriterAppender ログをライタに出力するアペンダ
ConsoleAppender ログをコンソールに出力するアペンダ
FileAppender ログをファイルに出力するアペンダ
RollingFileAppender ログをファイルに出力するアペンダ
DailyRollingFileAppender ログをファイルに出力するアペンダ
NullAppender ログに何も出力しないアペンダ

org.apache.log4j.WriterAppenderクラス

WriterAppenderクラスは、ログをjava.io.Writerオブジェクト又はjava.io.OutputStreamオブジェクトに出力するアペンダである。

org.apache.log4j.ConsoleAppenderクラス

ConsoleAppenderクラスは、ログをSystem.out(標準出力)及びSystem.err(標準エラー出力)に出力するアペンダである。ConsoleAppenderの設定例を次に示す。

log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target = System.out
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern = %d %-5p %F:%L %m%n
ConsoleAppenderのオプション
オプション 説明
Target ログの出力先。System.out(標準出力)又はSystem.err(標準エラー出力)を指定する。

org.apache.log4j.FileAppenderクラス

FileAppenderクラスは、ログをファイルに出力するアペンダである。FileAppenderの設定例を次に示す。

log4j.appender.FILE = org.apache.log4j.FileAppender
log4j.appender.FILE.Append = false
log4j.appender.FILE.File = log1.log
FileAppenderのオプション
オプション 説明
File ログのファイル名を相対パス又は絶対パスで指定する。
Append true(ファイルの末尾に追加する)又はfalse(ファイルに上書きする)を指定する。

org.apache.log4j.RollingFileAppenderクラス

log4j.appender.FILE = org.apache.log4j.RollingFileAppender
log4j.appender.FILE.File = log1.log
log4j.appender.FILE.MaxFileSize = 10MB
log4j.appender.FILE.MaxBackupIndex = 3
RollingFileAppenderのオプション
オプション 説明
File ログのファイル名を相対パス又は絶対パスで指定する。
MaxFileSize ログファイルの最大サイズを指定する。
MaxBackupIndex バックアップファイルの最大数を指定する。

org.apache.log4j.DailyRollingFileAppenderクラス

DailyRollingFileAppenderクラスは、FileAppenderを拡張したクラスで、日付や時間により、ファイルのバックアップが作成される。

log4j.appender.FILE = org.apache.log4j.DailyRollingFileAppender
log4j.appender.FILE.File = log1.log
log4j.appender.FILE.DatePatterm = '.'yyyy-MM-dd
DailyRollingFileAppenderのオプション
オプション 説明
File ログのファイル名を相対パス又は絶対パスで指定する。
DatePatterm 日付パターンを指定する。
DailyRollingFileAppenderクラスのDatePatterm
日付パターン ログファイル切り替えのタイミング
'.'yyyy-MM 日付が変わるとき
'.'yyyy-MM-dd-HH 1時間ごと

org.apache.log4j.varia.NullAppender

アペンダにorg.apache.log4j.varia.NullAppenderを指定すると、ログに何も出力しないようになる。

org.apache.log4jパッケージ

org.apache.log4jは、Log4jのメインパッケージである。

クラス 説明
ConsoleAppender ユーザが指定したレイアウトを使って、System.out又はSystem.errにログイベントを追加する。
DailyRollingFileAppender ユーザが選択した頻度でファイルをロールオーバーするようFileAppenderを拡張したクラス。
FileAppender ファイルにログイベントを追加する。
Logger org.apache.log4jパッケージの中心となるクラス。
RollingFileAppender 一定のサイズに達したらログファイルをバックアップするようFileAppenderを拡張したクラス。
WriteAppender ユーザの選択に応じてWriter又はOutputStreamにログイベントを追加する。
このエントリーをはてなブックマークに追加
スポンサーリンク