$ yum install logrotate
logrotate
はデーモンではないのでcrond
によって実行される。
/etc/cron.daily/logrotate
により
メイン設定ファイルの/etc/logrotate.conf
が読み込まれる。
メイン設定ファイル内のincludeにより
個別設定ファイルの/etc/logrotate.d/
以下が読み込まれる。
ローテーション確認
$ logrotate -d /etc/logrotate.d/httpd
強制実行
$ logrotate -f /etc/logrotate.d/httpd
実行履歴確認
$ cat /var/lib/logrotate.status
やりたかったこと
httpdのローテーション設定を変更したかった。
/var/log/httpd/*log {
missingok
notifempty
sharedscripts
delaycompress
postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null || true
endscript
}
週ごとのローテーション設定と、世代保存53週(1年)を追加
/var/log/httpd/*log {
weekly
rotate 53
missingok
notifempty
sharedscripts
delaycompress
postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null || true
endscript
}
動作確認
$ logrotate -dv /etc/logrotate.d/httpd
- vオプションで詳細を表示、個別設定ファイルの場合はメイン設定は使用されない
エラーが出ていた。remove対象のファイルがnot found。ふぁ???
vオプションで詳細をよく確認すると、ファイル名処理を日付ではなく連番のextentionで処理しているっぽい?
現状は/var/log/httpd
内には日付ファイル名が存在。
メイン設定ファイル内にdateext
という項目を発見。個別設定の方に追加。
/var/log/httpd/*log {
weekly
rotate 53
dateext
missingok
notifempty
sharedscripts
delaycompress
postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null || true
endscript
}
再確認
$ logrotate -dv /etc/logrotate.d/httpd
いけてるっぽいので実行
$ logrotate -fv /etc/logrotate.d/httpd
ログフォルダ確認
$ ls /var/log/httpd
ちゃんと消えてた。