自分用メモ。ログの設定は、一回設定したらその後はあまり触らないので、細かいことを忘れてしまい、何度も同じドキュメントを参照するハメになっているので。
jar ファイル
最低限、以下のファイルが必要。
log4j-api-2.3.jar
log4j-core-2.3.jar
log4j-web-2.3.jar
(2.3 はこれを書いている時点の最新バージョン)
log4j2 の設定ファイルの配置
設定ファイルはXML形式のみ記述(json形式とかは公式ドキュメント参照)。log4j 1.x系のproperties形式はなくなった。web.xml に設定ファイルの位置を記述する必要がある。
なお、以下のやり方はServlet API 3.0以上の場合。
WEB-INF の直下にファイルを配置する場合(これが最も楽)
ファイル名は log4j2.xml
または log4j2-[webappname].xml
とすれば、web.xml への設定は不要。
[webappname]
の部分には、Webアプリ名を入れる。ファイル名は必ず "log4j2" で始める必要がある。
Webアプリのルート以下のどこかに配置する場合
<context-param>
<param-name>log4jConfiguration</param-name>
<param-value>/config/log-config.xml</param-value>
</context-param>
<param-value>
には、Webアプリのルート以下のパスを書く。ファイル名は適当に。
ファイルパスを指定する場合
<context-param>
<param-name>log4jConfiguration</param-name>
<param-value>file:///sample/log-config.xml</param-value>
</context-param>
<param-value>
の値を file:///
で始めて、ファイル名は適当に。
クラスパスを指定する場合
<context-param>
<param-name>log4jConfiguration</param-name>
<param-value>classpath:/config/log-config.xml</param-value>
</context-param>
<param-value>
の値を classpath:
で始めて、クラスパス上のパスを記述する。
ログレベル
- ALL: 全てのレベルを出力
- OFF: ログを出力しない
あとは、ログレベルが高い(と言っていいのか?下に行くほど詳細)順に、
- FATAL
- ERROR
- WARN
- INFO
- DEBUG
- TRACE
ログレベルを指定しない場合は、ERROR がデフォルトとなる。
設定ファイルの書き方(XML形式)
こんな感じで(詳細は別でまとめた->log4j2の設定ファイル(XML))。ファイルエンコーディングはUTF-8とする。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="off">
<!-- AppenterやLoggerで使用するプロパティを定義する -->
<Properties>
<Property name="...">hoge</Property>
<Property name="..." value="..." />
</Properties>
<!-- ログの出力先と出力フォーマットを設定する -->
<Appenders>
</Appenders>
<!-- パッケージごとにAppenderとログレベルを組み合わせる -->
<Loggers>
<Logger ...>
<Logger ...>
</Loggers>
</Configuration>