logrotateでapacheのログのローテーション
logrotate はログをローテーションするプログラムです。
Apacheのログをローテーションする方法を紹介します。
Apacheのログは
/var/log/apache/access_log
/var/log/apache/error_log
に保存してあるとします。
logrotateでローテーションする設定ファイルは
/etc/logrotate.d
の中に入れます。
そこで、/etc/logrotate.d/apache
というファイルを作り、以下のように設定します。
/etc/logrotate.d/apache
/var/log/apache/access_log /var/log/apache/error_log {
postrotate
/bin/kill -HUP `cat /usr/local/apache/logs/httpd.pid 2>/dev/null` 2>/dev/null
endscript
}
1行目にログファイルを指定しています。複数あるときはスペースで区切ります。
2行目以下はプロセスの再起動をしています。プロセスファイル ( http.pid ) のパスもちゃんと通っている必要があります。
logrotate はデフォルトで1週間毎、4回までローテーションするようになっています。
このデフォルトは /etc/log/logrotate.conf に記載されています。
これを変更する場合は、このファイルを編集してもいいし、各設定ファイル ( /etc/logrotate.d/apache ) に記載することもできます。
これで、/var/log/apache は
access_log
access_log.1
access_log.2
access_log.3
access_log.4
error_log
error_log.1
error_log.2
error_log.3
error_log.4
のようにローテーションされるようになります。
access_log
error_log
が常に最新で、ローテーションされる時に
access_log → access_log.1
access_log.1 → access_log.2
のようにリネームされます。