2014年9月4日木曜日

tomcatのログローテート

logrotateコマンドを使用する方法


Amazon Linux、CentOS では、yum でインストール出来る。
Redhat系だったら導入は簡単ということ。他のディストリビューションは手元に無いので確認していない。

以下に設定ファイルを作成する。

/etc/logrotate.d

ファイルの名前で、logrorateを使っているアプリケーションがわかる。

ここでは、「/etc/logrotate.d/tomcat」とする。root で作業。

# vi /etc/logrotate.d/tomcat

# logrotate file for Tomcat
/opt/tomcat/logs/catalina.out {
  missingok
  copytruncate
  daily
  dateext
  rotate 60
}


オプションの整理



  • missingok:ログファイルが無くてもエラーを出さない
  • copytruncate:
  • daily:日でローテート
  • dateext:ファイル名末尾に日付をつける
  • rotate:残す世代数
  • compress:最新世代以外は圧縮
  • size:最大サイズを指定。最大になるとローテート


/etcc/cron.daily 配下のファイル logrotate がある。つまり、logrotateはcronによって毎日走る。

実行スクリプトがどこにあるかというと、logrotate.d にすべてのスクリプトが含まれる。

include /etc/logrotate.d



logrotateの強制実行


# logrotate -f /etc/logrotate.d/tomcat


cron.dailyの強制実行


# anacon -f

上記で、少なくとも logrotate と cron による実行確認可能。

サーバに設定して、動作確認すればOK。


accesslogの設定



catalina.outだけでなく、accessログも logrotate でローテートする場合は、tomcatが自動でローテートしないように以下の設定を行う。

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="access_log." suffix=".txt" ←★ファイル名は access_log.txt に固定される
               rotatable="false" ←★ 自動ローテートをOFF
               pattern='%h %l %u %t "%r" %s %b %D "%{Referer}i" "%{User-Agent}i"' />

その後、tomcatのローテート設定にファイルを追加する。

# logrotate file for Tomcat
/opt/tomcat/logs/catalina.out
/opt/tomcat/logs/access_log.txt
{
  missingok
  copytruncate
  daily
  dateext
  rotate 60
}

0 件のコメント:

コメントを投稿