ログのアーカイブと削除には次の設定を使用しています。
/path/to/logs/*.log {
daily
missingok
compress
rotate 4
nodateext
nocreate
maxage 14
}
私のログの場所には、次のようなログがあります。
-rwxrwxrwx 1 nobody nobody 21635 Sep 26 13:09 audit-2016.09.26.log
これを回転して圧縮すると次のようになります。
-rwxrwxrwx 1 nobody nobody 180485 Sep 10 03:41 audit-2016.09.26.log.1.gz
私が抱えている問題は、毎晩アーカイブした後、ログが 14 日後に削除されないことです (maxage ディレクティブで削除されるはずです)。
なぜこのようなことが起こるのか、または logrotate 構成で何を変更すればよいのか、誰か分かる人はいますか?
ありがとう!
答え1
logrotate のマニュアルページより:
最大年齢カウント
日より古いローテーションログを削除します。ログファイルをローテーションする場合にのみ、経過時間がチェックされます。
audit-2016.09.26.log
一度だけ作成され、その後は二度と作成されません。したがって、再びローテーションされることはありません。
実際の監査ログファイルすでに回転している圧縮して古いファイルを削除するだけのようです。これが logrotate で可能かどうかはわかりません。次のように、元のルールに postrotate スクリプトを追加できます。
postrotate
find /path/to/logs -name "*.log.1.gz" -mtime +14 -delete
endscript