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

のようにリネームされます。