Tomcat の catalina.out のローテーション
Tomcat は $CATALINA_HOME/logs 以下に catalina.out という名前で標準出力 (と標準エラー出力) が出力されます。デフォルトではこのファイルにどんどん追記されていくため、気付いたら巨大な ファイルになっていることもありますよね。
このようなファイルはローテーションしましょう。
ファイルを作成している箇所は $CATALINA_HOME/bin/catalina.sh で、2>&1 を使って java コマンドの標準出力をリダイレクトしています。
標準出力をローテーションするには Apache に付属の rotatelogs や cronolog を利用できます。
/usr/sbin/rotatelogs $CATALINA_HOME/logs/catalina.out.%Y-%m-%d 86400 540
ファイル名には %Y 等の strftime(3) のフォーマットを指定可能、後ろの数値は 86400 秒 (1 日) 間隔のローテーション、540 分 (9 時間) の UTC からの時差を示します。
あとは cron などから古いファイルを削除するシェルスクリプトを実行します。
本来は Tomcat 本体が標準出力に書くのをやめるべきだと思いますが、アプリケーションに System.out が残っている場合もありますし、スレッドダンプを取ったりするのに便利なので Java アプリケーションサーバでは標準出力のローテーションは必須ですね。
- Andy