Logrotate が古いログを削除しない

Logrotate が古いログを削除しない

ログのアーカイブと削除には次の設定を使用しています。

/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

関連情報