はじめに
旧版Tomcat(5.5/6.0)でTomcat関連ログをログローテする方法について検討した結果を記載。
背景
ログローテのやり方自体についてはネット上探せばゴロゴロ出てくるのですが、
導入されているTomcatのバージョンによってログ周りの設定も色々異なるため、
備忘録としてこの記事を作成しました。
というかバージョン上がるたびにコロコロ設定変わり過ぎだろ
Tomcat5.5系
ログ周りの設定はTomcatインストール先/conf/logging.propertiesに記載されているのですが、
5.5系ではrotatableパラメータもないので、素直にcrontabにコマンド書いて定期的に削除するのが一番楽な気が。
0 0 * * * /usr/bin/find /Tomcatインストール先/logs/ -mtime +14 -exec rm -f {} \; > /dev/null 2>&1
上記の例だと毎日0時にlogsディレクトリの中のタイプスタンプの更新日時が2週間以上前のファイルを一括で削除する動作になります。findのパスやTomcatのインストール先は環境によって異なるはずなので環境に合わせて修正してください。
というかTomcat5.5系の場合は普通に使ってたらcatalina.out以外のログに、
何かしら書き込まれるのって再起動のタイミングくらいな気が
Tomcat6.0系
Tomcat6系だとlogging.propertiesのFileHandlerにrotatableパラメータが追加されているため、
こいつを明示的にfalseにしてやれば日付ごとにファイルは作成されず、
常に単一のファイルに追記されるようになります。
1catalina.org.apache.juli.FileHandler.suffix = log
1catalina.org.apache.juli.FileHandler.rotatable = false
2localhost.org.apache.juli.FileHandler.suffix = log
2localhost.org.apache.juli.FileHandler.rotatable = false
3manager.org.apache.juli.FileHandler.suffix = log
3manager.org.apache.juli.FileHandler.rotatable = false
4host-manager.org.apache.juli.FileHandler.suffix = log
4host-manager.org.apache.juli.FileHandler.rotatable = false
こんな感じ。
後はlogrotateでTomcat用の設定ファイルを追加してやれば、
細かくログローテの設定ができるはず。
/Tomcatインストール先/logs/*.log
{
copytruncate
daily
dateext
missingok
rotate 14
compress
create 0644 tomcat tomcat
}
Tomcatのユーザ名なんかはこれまた環境によって異なるかもしれないので
各自で自分の環境に合わせてください。
勿論5.5系と同じようにfindコマンドとrmコマンドを組み合わせて、
削除する方法も使えます。
Tomcat7.0系以降
Tomcat7.0系以降だとFileHandlerにmaxDaysプロパティが追加されたことで、
更に設定が楽になったようです。まだ試してないけど
デフォルトの設定を見た限りだと、ログは永久的に保存される設定になっていますが、
maxDaysプロパティに明示的に値を指定してあげることで、
ログを保管する期間を設定できるようです。
つまりログの種類によって保持する期間を変更したい場合など、
わざわざlogrotateに設定した上でログごとによって設定ファイルを分けたりする必要もなくなる訳ですね。
おわりに
サーバ複数台構成の大きいシステムだとサーバごとによってミドルウェアのバージョン違いによる細部の設定が異なったりするので、
何か変更を加える際は、導入されているバージョンで有効な設定なのか、十分な確認が必要ですね(ありきたり)。