LoginSignup
9
8

More than 5 years have passed since last update.

Tomcat8.5のログ出力をLog4j2.8以降に置き換える

Posted at

Tomcat8.5系のログ出力の変更点

Tomcat8.0系とは異なり、8.5系のログ出力は少々変更点があります。

  • commons-logging実装に置き換えた
  • 8.0系まで存在していたログ出力用のアダプタは拡張(extras)からなくなり、最初から同梱されている
    • 同梱先はなぜか bin ディレクトリにある tomcat-juli.jar
    • そのため、startup.batやstartup.shにて、わざわざクラスパスを追加している

今回これをLog4j2に置き換えますが、Log4j2.4以前の方法では、 一切無視 されてしまいます。

Log4J2.8.2から出力する方法

手順は次のとおりです。

  1. log4j2のjarをTomcatへコピーする
  2. log4j2の設定ファイルを配置する
  3. log4j2の設定ファイルへのパスを環境変数に追加する

1. log4j2のjarをTomcatへコピーする

https://logging.apache.org/log4j/2.x/download.html より、log4j2の一式をダウンロード→解凍します。
次にTomcatの標準ログアダプタとして食わせるjarファイルと、Log4J2本体のjarを Tomcat8.5インストールディレクトリ( 以降、Tomcat起動bat|shファイルにならい、環境変数に定義している CATALINA_HOME とします )の lib へ以下3つを配置します。

  • log4j-api-2.8.2.jar
  • log4j-core-2.8.2.jar
  • log4j-jcl-2.8.2.jar

2. log4j2の設定ファイル(log4j2.xmlやlog4j2.yml)を配置する

Log4j2の設定ファイル(通常は log4j2.xmlを使います)を作り、これを配置します。配置先はどこでも良いですが、わかりやすいように、CATALINA_HOME/conf の中へ配置します。

log4j2.xmlの設定例については、 Qiita:Tomcatのログ出力をlog4j2に置き換える手順 にもあります。適宜調整をしましょう。

3. log4j2の設定ファイルへのパスを環境変数に追加する

Tomcat起動ファイルである、startup.bat , startup.sh にて、環境変数を定義できる setenv.bat , setenv.sh を実行するよう定義されていますので、これらのファイルを 作成 します。

Windowsであれば次の1行を記述します

setenv.bat
SET JAVA_OPTS=%JAVA_OPTS% -Dlog4j.configurationFile=file://%CATALINA_HOME%/conf/log4j2.xml

設定項目は以上です。
startup.bat や startup.sh を実行すると、無事 Log4j2から出力されます。

Tomcat8.0系まで有効だった手順で、やってはいけないこと

Tomcat8.0系までは、CATALINA_HOME/conf にある logging.properties を削除するか他の場所へ退避し、ログ出力用のアダプタを別途ダウンロードする必要がありましたが、これらの作業は不要になりました。むしろ やってはいけません(ログ設定が一切無視されるため)

参考文献

Qiita:Tomcatのログ出力をlog4j2に置き換える手順
Log4J|Commons Logging Bridge
http://tomcat.apache.org/download-80.cgi#8.5.15

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8