Logrotate entfernt Dateien gemäß der Reihenfolge in einer lexikalisch sortierten Liste rotierter Protokolldateinamen und auch nach Dateialter (unter Verwendung der letzten Änderungszeit der Datei)
-
drehen ist die maximale Anzahl gedrehter Dateien, die Sie finden können. Bei einer höheren Anzahl rotierter Protokolldateien werden deren Namen lexikalisch sortiert und die lexikalisch kleinsten entfernt.
-
maximal definiert ein weiteres Kriterium zum Entfernen rotierter Protokolldateien. Jede rotierte Protokolldatei, die älter als die angegebene Anzahl von Tagen ist, wird entfernt. Beachten Sie, dass das Datum aus der letzten Änderungszeit der Datei ermittelt wird, nicht aus dem Dateinamen.
-
Datumsformat ermöglicht eine spezifische Formatierung für das Datum in gedrehten Dateien. Manpage weist darauf hin, dass das Format zu einer lexikalisch korrekten Sortierung führen soll .
-
Gestern ermöglicht die Verwendung von Daten in Protokolldateinamen einen Tag zurück.
Um eine bestimmte Anzahl von Tagen in täglich rotierten Dateien (z. B. 7) beizubehalten, müssen Sie rotate
einstellen auf den Wert 7 und Sie können maxage
ignorieren , wenn deine Dateien wirklich jeden Tag erstellt und gedreht werden.
Wenn die Protokollerstellung einige Tage lang nicht erfolgt, z. für 14 Tage bleibt die Anzahl der rotierten Protokolldateien gleich (7).
maxage
verbessert die Situation in Szenarien mit nicht erstellten Protokollen, indem zu alte Dateien immer entfernt werden. Nach 7 Tagen ohne Protokollerstellung sind keine rotierten Protokolldateien mehr vorhanden.
Sie können dateformat
nicht verwenden wie OP zeigt, da es nicht lexikalisch sortierbar ist. Durcheinander mit dateformat
würde wahrscheinlich dazu führen, dass andere rotierte Protokolldateien entfernt werden, als Sie eigentlich wollten.
Tipp :Führen Sie logrotate von der Befehlszeile mit -d
aus Option, einen Probelauf durchzuführen:Sie werden sehen, was logrotate tun würde, aber tatsächlich nichts tut. Führen Sie dann einen manuellen Lauf mit -v
durch (ausführlich), damit Sie bestätigen können, dass das, was getan wird, Ihren Wünschen entspricht.
Lösung:Bereinigung der von Cron erstellten Protokolle
Das Konzept ist:
Lassen Sie cron die Protokolldateien erstellen und aktualisieren, aber nehmen Sie kleine Änderungen vor, um Dateien zu erstellen, und folgen Sie dabei den Standard-Dateinamen von logrotate, wenn Sie standardmäßig dateext
verwenden
/data/tier2/scripts/logs/recover_standby_SID.log-`date +\%Y\%m\%d`.log
Verwenden Sie logrotate nur zum Entfernen zu alter Protokolldateien
- auf nicht vorhandene Protokolldatei
/data/tier2/scripts/logs/recover_standby_SID.log zielen
- benutze
missingok
Logrotate-Bereinigung durchführen zu lassen - set
drehen
hoch genug, um die Anzahl der aufzubewahrenden Protokolldateien abzudecken (mindestens 7, wenn es eine "rotierte" Protokolldatei pro Tag gibt, aber Sie können sie sicher sehr hoch wie 9999 setzen) - set
maxage
bis 7. Dadurch werden Dateien entfernt, deren letzte Änderungszeit länger als 7 Tage ist. Datumstext
wird nur verwendet, um sicherzustellen, dass logrotate nach älteren Dateien sucht, die wie rotiert aussehen.
Die Logrotate-Konfigurationsdatei würde folgendermaßen aussehen:
data/tier2/scripts/logs/recover_standby_SID.log {
daily
missingok
rotate 9999
maxage 7
dateext
}
Lösung:einmal täglich direkt per logrotate rotieren
Ich bin mir nicht sicher, wie die Quellwiederherstellungs-Standby-Datei erstellt wird, aber ich gehe davon aus, dass Oracle oder ein Skript von Ihnen regelmäßig oder kontinuierlich an eine Datei /data/tier2/scripts/logs/recover_standby_SID.log
Das Konzept ist:
- rotiere die Datei einmal täglich mit
logrotate
- direktes Arbeiten mit der Protokolldatei, die Wiederherstellungsdaten enthält
/data/tier2/scripts/logs/recover_standby_SID.log
täglich
bewirkt einmal am Tag eine Rotation (im Hinblick darauf, wiecron
verstehttäglich
)drehen
muss auf 7 (oder eine höhere Zahl) gesetzt werden.maxage
auf 7 (Tage) gesetztDatumstext
Standard-Logrotate-Datumssuffix verwendenDatumGestern
Wird verwendet, um Datumssuffixe in rotierten Dateien zu verursachen, die einen Tag zurückliegen.missingok
um ältere Dateien zu bereinigen, auch wenn keine neuen Inhalte zum Rotieren vorhanden sind.
Die Logrotate-Konfiguration würde folgendermaßen aussehen:
data/tier2/scripts/logs/recover_standby_SID.log {
daily
missingok
rotate 7
maxage 7
dateext
dateyesterday
}
Beachten Sie, dass Sie möglicherweise ein wenig mit copytruncate
spielen müssen und andere ähnliche Optionen, die sich darauf beziehen, wie die Quellprotokolldatei von einem externen Prozess erstellt wird und wie sie auf den Rotationsakt reagiert.