Können Sie uns sagen, warum Sie dies tun möchten? Vielleicht gibt es andere Möglichkeiten ...
chmeee
In meinem Fall wäre es schön, große alte Protokolle auf einen externen Speicherplatz herunterzuladen und neue auf dem Server zu behalten. Also brauche ich einen einfachen Holzspalter.
Sekrett
2
Mein Anwendungsfall für diese Konfiguration ist: Ich möchte mein Protokoll für immer aufbewahren, da ich es möglicherweise für Überwachungszwecke benötige, ABER ich möchte, dass meine Dateien gedreht werden, damit das aktuelle Protokoll nicht zu groß wird und die gedrehten nicht zu groß werden komprimiert - andernfalls ist das Sichern der Protokolle auf einem externen Server zu schwierig und das Überprüfen der Dateien zu langsam.
Rudolf Mayer
Antworten:
32
Ändern Sie in Ihrer Datei logrotate.conf (oder der entsprechenden Datei logrotate.d) die Zeile mit der Aufschrift "
rotate 10
(Ihre Nummer kann abweichen) zu einer größeren Nummer. Das wird es sagen, so viele Tage Protokolle zu halten. Sie können es 36500 machen, was Ihnen 100 Jahre dauern würde.
Wenn ich das auf einem Himbeer-Pi (Himbeer) machte, fror es jede Nacht ein. Einmal konnte ich Prozesse ausführen und Dateien über die serielle Konsole öffnen. Dabei stellte ich fest, dass versucht wurde, 100000 nicht vorhandene Dateien umzubenennen. Also hüte dich davor. Leider habe ich keine detaillierteren Informationen
Christian
0
Ich habe danach gesucht, um meine Datenbank-Backups täglich, wöchentlich und monatlich zu wechseln. Daher drehe ich die Datei täglich, behalte sie jedoch für die wöchentliche Drehung und für die jährliche Drehung.
Verwenden Sie die Kopieroption. Aus dem Handbuch:
copy
copy Erstellen Sie eine Kopie der Protokolldatei, aber ändern Sie das Original überhaupt nicht. Diese Option kann zum Beispiel verwendet werden, um eine Momentaufnahme der aktuellen Protokolldatei zu erstellen, oder wenn ein anderes Dienstprogramm die Datei abschneiden oder analysieren muss. Wenn diese Option verwendet wird, hat die Option create keine Auswirkung, da die alte Protokolldatei an Ort und Stelle bleibt.
Dies entspricht dem folgenden Kommentar ( serverfault.com/a/50186/275485 ) und gibt keine korrekte Antwort. Kopie bedeutet nicht, dass Ihre alten Dateien, die gedreht wurden, nicht gelöscht werden.
Rudolf Mayer
-3
Stellt den Punkt beiseite, bei dem die Rotation gelöscht werden muss ... ;-)
Es sieht so aus, als ob Sie einfach das Wort 'copy' zur entsprechenden Datei hinzufügen können (wahrscheinlich in /etc/logrotate.d). Ein Apache2-Logrotate-Skript würde beispielsweise so aussehen:
/var/log/apache2/*.log {
wöchentlich
missingok
52 drehen
komprimieren
delaycompress
notifempty
Kopieren
SharedScripts
nachrotieren
if [-f "`. / etc / apache2 / envvars; echo $ {APACHE_PID_FILE: - / var / run / apache2.pid} `"]; dann
/etc/init.d/apache2 reload> / dev / null
fi
Endskript
}
Versuchen Sie das und sehen Sie, ob es das tut, was Sie wollen.
Angenommen, er möchte, dass die Dateien "gedreht" werden, löscht aber nie die alten Dateien, dann ist dies nicht der Fall. Das Hinzufügen von "copy" zur Zeilengruppe config bedeutet, dass die ursprüngliche Datei für immer größer wird, aber letztendlich die älteren Kopien der Datei gelöscht werden. So wie ich es verstehe, ist "Kopieren" in erster Linie nützlich, wenn Sie erwarten, dass ein anderer Prozess das Original abschneidet / löscht.
Insyte
Genau das dachte ich, wonach er gefragt hat. Er fragte ausdrücklich nach einer Möglichkeit, "meine Protokolldateien nicht zu löschen", nicht nach einer Möglichkeit, "alte Archive meiner Protokolldateien nicht zu löschen". Ich schätze, ich sollte vor Fragen, die nur ein Thema und keinen Körper betreffen, vorsichtiger sein ;-)
Justin Ellison
2
Die Phrase "nach der Drehung" liefert einen Hinweis.
Bis auf weiteres angehalten.
4
Msgstr "Den Punkt beiseite legen, bei dem die Drehung das Löschen beinhaltet ..." Nicht unbedingt. Bei der Rotation müssen die alten Protokolle lediglich komprimiert und aufbewahrt werden. Dies scheint die Frage zu sein.
Antworten:
Ändern Sie in Ihrer Datei logrotate.conf (oder der entsprechenden Datei logrotate.d) die Zeile mit der Aufschrift "
(Ihre Nummer kann abweichen) zu einer größeren Nummer. Das wird es sagen, so viele Tage Protokolle zu halten. Sie können es 36500 machen, was Ihnen 100 Jahre dauern würde.
quelle
Ich habe danach gesucht, um meine Datenbank-Backups täglich, wöchentlich und monatlich zu wechseln. Daher drehe ich die Datei täglich, behalte sie jedoch für die wöchentliche Drehung und für die jährliche Drehung.
Verwenden Sie die Kopieroption. Aus dem Handbuch:
copy Erstellen Sie eine Kopie der Protokolldatei, aber ändern Sie das Original überhaupt nicht. Diese Option kann zum Beispiel verwendet werden, um eine Momentaufnahme der aktuellen Protokolldatei zu erstellen, oder wenn ein anderes Dienstprogramm die Datei abschneiden oder analysieren muss. Wenn diese Option verwendet wird, hat die Option create keine Auswirkung, da die alte Protokolldatei an Ort und Stelle bleibt.
quelle
Stellt den Punkt beiseite, bei dem die Rotation gelöscht werden muss ... ;-)
Es sieht so aus, als ob Sie einfach das Wort 'copy' zur entsprechenden Datei hinzufügen können (wahrscheinlich in /etc/logrotate.d). Ein Apache2-Logrotate-Skript würde beispielsweise so aussehen:
Versuchen Sie das und sehen Sie, ob es das tut, was Sie wollen.
quelle