catalina.outのローテーション

tomcatで開発するとついついやってしまうのがcatalina.outの放置だ。
いつのまにか肥大化してディスク容量を圧迫する。
そんな時便利なのがlogrotateコマンドだ。
似たようなコマンドにrotatelogsがあるが、これはapache付属なのでtomcat単体では使えない。

/etc/logrotate.confにログローテーションの個々の設定を追記するのだが、通常は/etc/logrotate.d配下のファイルに記載するのが慣例のようだ。
拙宅のCATALINA_HOMEは/usr/local/tomcatであるため、以下の設定ファイルを作成した。
/etc/logrotate.d/tomcat

/usr/local/tomcat/logs/catalina.out {
  missingok
  copytruncate
  daily
  sharedscripts
  postrotate
    EXT=`date +%Y%m%d`
    for f in $1;
      do mv $f.1 $f.$EXT;
    done
  endscript
}

この設定ファイルが正しく記述されているかは下記コマンドで調べる。
/usr/sbin/logrotate -d /etc/logrotate.d/tomcat
エラーがあればその個所を指摘してくれるはずだ。
問題なければこの設定ファイルを実行してみる。
-fオプションは指定した設定ファイルを強制実行する。
/usr/sbin/logrotate -f /etc/logrotate.d/tomcat
ここで設定した通りcatalina.outがローテーションされるはずだ。

因みに今回の設定の概要は以下の通り。
・ログを毎日ローテーションする。
・下記書式でローテーションファイルを作成する。
catalina.out.yyyymmdd
この書式のログファイルは自動的に削除はされないので、別途削除のためのメンテナンスが必要となるから注意しよう。

尚、logrotateの日々の実行はcronにより行われる。
下記でそのスクリプトを確認しよう。
cat /etc/cron.daily/logrotate
cronデーモンの実行は下記で確認できる。
/etc/init.d/crond status
cronが自動起動になっていることも確認しておこう。
/sbin/chkconfig –list crond
これでログローテーションは問題なく行われるはずだ。

下記サイトを参考にしました。
ありがとうございました。
logrotateの設定
ローテーションの実行タイミング

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です