Logrotate löscht ältere Protokolle nicht

Logrotate löscht ältere Protokolle nicht

Zum Archivieren und Löschen von Protokollen verwende ich folgendes Setup:

/path/to/logs/*.log {
    daily
    missingok
    compress
    rotate 4
    nodateext
    nocreate
    maxage 14

}

An meinem Protokollspeicherort befinden sich Protokolle, die folgendermaßen aussehen:

-rwxrwxrwx 1 nobody nobody 21635 Sep 26 13:09 audit-2016.09.26.log

Diese werden dann gedreht und komprimiert, sodass sie wie folgt aussehen:

-rwxrwxrwx 1 nobody  nobody    180485 Sep 10 03:41 audit-2016.09.26.log.1.gz

Mein Problem besteht darin, dass die Protokolle nach der nächtlichen Archivierung nicht nach 14 Tagen gelöscht werden (wie es die Maxage-Direktive tun sollte).

Hat jemand eine Idee, warum das passiert oder was ich in meiner Logrotate-Konfiguration ändern sollte?

Danke!

Antwort1

Aus der Manpage von logrotate:

Maximale Anzahl

Entfernen Sie rotierte Protokolle, die älter als Tage sind.Eine Überprüfung des Alters erfolgt nur, wenn das Logfile rotiert werden soll.

audit-2016.09.26.logwurde nur einmal erstellt und nie wieder. Es wird also nie wieder rotiert.

Tatsächlich Ihre Audit-Logdateiensind bereits gedreht. Sieht so aus, als ob Sie sie nur komprimieren und alte Dateien entfernen möchten. Ich weiß nicht, ob das mit logrotate möglich ist. Sie können Ihrer ursprünglichen Regel ein Postrotate-Skript hinzufügen, etwa:

       postrotate
           find /path/to/logs -name "*.log.1.gz" -mtime +14 -delete
       endscript

verwandte Informationen