アクセスログのローテーション化

カテゴリ:ログ管理
日時:2005/01/23 13:58

logrotateをインストールしたら、Apacheのアクセスログとエラーログをローテーションさせる設定を行う。

Apache用の設定は、/etc/logrotate.d/apacheというファイルで行う。基本的には/etc/logrotate.confの内容が適用されるので、/etc/logrotate.d/apacheには/etc/logrotate.confと異なる部分だけ記述すればよい。 ウチでは、以下の設定で運用している。
/var/log/apache2/access_log /var/log/apache2/error_log {
    missingok
    sharedscripts
    monthly
    postrotate
        /bin/kill -HUP `cat /var/run/apache2.pid`
    endscript
}
「missingok」は、対象となるファイル(ログファイル)が存在しない場合でもエラーを出力させない指定。「sharedscripts」は、複数のログファイルを指定している設定(/var/log/apache2/access_logと/var/log/apache2/error_logを一度に指定しているため)。

また、「monthly」で月ごとのローテーションとしている(/etc/logrotate.confの設定をオーバーライト)。
postrotate

endscript
は、ローテーション後に実行するコマンドを指定するブロック。ここでは、Apacheを再起動している。ローテーションが行われると、logrotateはApacheのために新たなログファイル(access_logとか)を生成する。しかし、Apacheは再起動するまでこのファイルを認識することができないのである。logrotateを使用する場合は必ず行うべき、定番設定といえるだろう。