タイトル通り。
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日かかった……。)
この記事を見て、2017年02月28日時点でのコメント以降になにか変化があったら、解消されているかもしれない。log4j2が新しいバージョンをお使いの人は、上のリンクを確認してほしい。
OnStartupTriggeringPolicy、TimeBased Triggering Policyは問題なく動いた
OnStartupTriggeringPolicy、TimeBased Triggering Policyは問題なく動きました。
Tomcat8.5以上だと、Tomcat公式に書かれている手順だとlog4j2は動かない。
以下の記事を読んでほしい。この通りにやると動きました。(この記事にたどり着くにも1日かかった……。)
log4jでもサイズローテートはだめ
んで、log4jでサイズローテートができるかやってみた。手順は公式のとおり。
ただし、log4j2と同じように、うまくいくときといかないときがあって、安定しなかった……。
そして、たどり着いたのが、以下の中国語の記事。

やったことは以下のとおり。公式の手順に加えて、以下の手順を追加して行いました。
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翻訳機能には助けられました。
翻訳でわからなかったところは、席替えでたまたま隣になった中国人のプログラマの人にも感謝……!
そして、先人の方々のアウトプットにホンマに感謝でした!
参考情報
