Edited at

log4j2 を Webアプリケーションで使う場合の配置と設定

More than 3 years have passed since last update.

自分用メモ。ログの設定は、一回設定したらその後はあまり触らないので、細かいことを忘れてしまい、何度も同じドキュメントを参照するハメになっているので。


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アプリのルート以下のどこかに配置する場合


web.xml

<context-param>

<param-name>log4jConfiguration</param-name>
<param-value>/config/log-config.xml</param-value>
</context-param>

<param-value> には、Webアプリのルート以下のパスを書く。ファイル名は適当に。


ファイルパスを指定する場合


web.xml

<context-param>

<param-name>log4jConfiguration</param-name>
<param-value>file:///sample/log-config.xml</param-value>
</context-param>

<param-value> の値を file:/// で始めて、ファイル名は適当に。


クラスパスを指定する場合


web.xml

<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とする。


log4j2.xml

<?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>



参照したURL