Ich habe die folgende neue Logrotate-Konfiguration:
/var/log/nexus/nexus.log {
rotate 7
missingok
compress
delaycompress
copytruncate
daily
}
Wenn ich renne logrotate -d nexus
, erhalte ich Folgendes:
reading config file nexus
reading config info for /var/log/nexus/nexus.log
Handling 1 logs
rotating pattern: /var/log/nexus/nexus.log after 1 days (7 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/nexus/nexus.log
log does not need rotating
Mein / var / log / nexus / Ordner enthält Folgendes:
nexus.log
oldlogs.tar.gz
Warum dreht LogRotate die Datei nexus.log nicht? Was ich erwartet hatte, war, dass die Datei nexus.log abgeschnitten worden wäre und eine neue Datei, etwa nexus.log-201106241000, erstellt worden wäre.
Antworten:
Höchstwahrscheinlich ist die Protokolldatei weniger als einen Tag alt und / oder wurde am letzten Tag gedreht, und logrotate speichert den Verlauf.
Wenn Sie hinzufügen ,
-f
wird es eine Drehung erzwingen , wenn Sie wirklich (wenn auch nicht 100% sicher , wie das in Wechselwirkung mit wollen-d
).Sie können sich den Verlauf ansehen, der Ort hängt von Ihrer Distribution ab, kann aber auch sein
/var/lib/logrotate/status
. Diese Datei zeigt an, wann die Protokolle zuletzt gedreht wurden.quelle
-d
+-f
macht logrotate Bericht "muss rotieren" für alle Dateien, auch diejenigen, die nicht übereinstimmenlogrotate
dass das Protokoll rotiert werden muss, wenn es erneut ausgeführt wird.Wenn Sie logrotate zum ersten Mal mit einer neuen Protokollkonfiguration ausführen, ist nicht bekannt, wann die letzte Protokollrotation stattgefunden hat. Daher wird nur eine Statuszeile
/var/lib/logrotate/status
mit dem Effekt geschrieben, der heute ausgeführt wurde.Wenn es anschließend am folgenden Tag ausgeführt wird, erkennt es, dass das Protokoll einen Tag alt ist, und dreht es wie erwartet. Wenn Sie nicht warten möchten, bearbeiten Sie die Statusdatei von logrotate und setzen Sie das Statusdatum für Ihr Protokoll auf den vorherigen Tag zurück.
Wenn Sie logrotate manuell ausführen, funktioniert es wie erwartet
quelle
Selbst wenn Sie logrotate manuell ausführen, funktioniert dies manchmal nicht, wenn Sie es am selben Tag
dateext
ausführen und der Standardwert keine Sekunden enthält (z-%Y%m%d
. B. ). Nicht einmal, wenn Sie die Statusdatei von logrotate ändern oder eine Größenanweisung verwenden (zBsize 200M
). Zumindest unter CentOS 6 kann logrotate Ihre Protokolldatei nicht drehen, da sie bereits vorhanden ist.Um dies zu lösen, müssen Sie
dateformat
anstelle vondateext
einen Wert wie: verwenden%Y%m%d%s
.Siehe
man logrotate
für weitere Informationen.quelle
Pass auf, dass du rennst
Das Ereignis, obwohl nur simuliert, wird protokolliert,
/var/lib/logrotate.status
und nachfolgende Logrotate-Läufe antworten mit dem genanntenquelle
/var/lib/logrotate.status
) beim Debuggen der Konfiguration von Logrotate 3.10 unter Alpine Linux 3.5 in einem Docker-Container beobachtet wurde. Aber es gibt kein Ubuntu-Flag in der Fragendefinition, oder?/var/lib/logrotate/logrotate.status