タイトル通り。
2017年6月初旬にこの作業したんだけど、数日間の終電帰りの大残業を強いられてしまったので、他の人が同じ轍を踏まないように書いておこうと思う。

今回使っているバージョン

今回使用しているバージョンを記載しておきます。

AWS EC2
Linux Centos7
Tomcat8.0.41
Java 1.8.0_121
log4j2 2.8.2、log4j2 2.7
log4j 1.2.17

結論から言うと、今はTomcat8+log4j2でサイズローテートはできない

log4j2 2.8時点でlog4j2のサイズローテートのトリガー SizeBasedTriggeringPolicy に不具合があるらしく、しかもまだ解消されていないらしい。

私が作業したときはlog4j2 2.8.2、log4j2 2.7でもダメだった。
エラーなくTomcatがサービス起動できてもうまくいく場合といかない場合があるので、使えなかった。

以下の記事をみつけたんですよね。(たどり着くまで2日かかった……。)

[LOG4J2-1086] SizeBasedTriggeringPolicy is not working properly – ASF Jira

この記事を見て、2017年02月28日時点でのコメント以降になにか変化があったら、解消されているかもしれない。log4j2が新しいバージョンをお使いの人は、上のリンクを確認してほしい。

OnStartupTriggeringPolicy、TimeBased Triggering Policyは問題なく動いた

OnStartupTriggeringPolicy、TimeBased Triggering Policyは問題なく動きました。

Tomcat8.5以上だと、Tomcat公式に書かれている手順だとlog4j2は動かない。
以下の記事を読んでほしい。この通りにやると動きました。(この記事にたどり着くにも1日かかった……。)

http://mail-archives.apache.org/mod_mbox/tomcat-users/201607.mbox/%3CBAY406-EAS165A578E6D90447E4CC9B0B96010%40phx.gbl%3E

log4jでもサイズローテートはだめ

んで、log4jでサイズローテートができるかやってみた。手順は公式のとおり。

Apache Tomcat 8 (8.0.53) – Logging in Tomcat

ただし、log4j2と同じように、うまくいくときといかないときがあって、安定しなかった……。
そして、たどり着いたのが、以下の中国語の記事。

tomcat 8.5.9.0 解决catalina.out过大的问题 – 菩提树下的杨过 – 博客园
先吐嘈一下tomcat这个项目,日志切割这么常见的功能,tomcat这种知名开源项目默认居然不开启,生产环境跑不了几天,磁盘就满了,而且很多网上流传的方法,比如修改conf/logging.properties文件,将级别设置成OFF,我试500

やったことは以下のとおり。公式の手順に加えて、以下の手順を追加して行いました。

setenv.shにlog4j.propertiesの設定をする。

# vi /${TOMCAT_HOME}/bin/setenv.sh

JAVA_OPTS="$JAVA_OPTS -Dlog4j.configurationFile=file:///${TOMCAT_HOME_PATH}/lib/log4j.properties"

catalina.sh以下の通りに修正。(210行あたり)

# vi /${TOMCAT_HOME}/bin/catalina.sh

if [ -z "$CATALINA_OUT" ] ; then
#CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
CATALINA_OUT=/dev/null
fi

まとめ

まさか、ここまでどツボにはまるというか、えらい目にあった。新しいバージョンだから使えるとは限らないですね、ほんとに。

それに、今回は中国語サイトまで読むことになって、ほんとうにGoogle翻訳機能には助けられました。
翻訳でわからなかったところは、席替えでたまたま隣になった中国人のプログラマの人にも感謝……!

そして、先人の方々のアウトプットにホンマに感謝でした!

参考情報

[LOG4J2-1086] SizeBasedTriggeringPolicy is not working properly – ASF Jira

tomcat 8.5.9.0 解决catalina.out过大的问题 – 菩提树下的杨过 – 博客园
先吐嘈一下tomcat这个项目,日志切割这么常见的功能,tomcat这种知名开源项目默认居然不开启,生产环境跑不了几天,磁盘就满了,而且很多网上流传的方法,比如修改conf/logging.properties文件,将级别设置成OFF,我试500