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から出力する方法
手順は次のとおりです。
- log4j2のjarをTomcatへコピーする
- log4j2の設定ファイルを配置する
- 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行を記述します
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