Frage Wie konfiguriere ich Logrotate, um meine Log-Dateien nach der Rotation nicht zu löschen?


Es gibt einen Weg, dies zu tun?


20
2017-08-05 04:32


Ursprung


Kannst du uns sagen, warum du das machen willst? Vielleicht gibt es andere Möglichkeiten ... - chmeee
In meinem Fall wäre es nett, große alte Logs auf externen Speicher zu laden und neue auf dem Server zu behalten. Also brauche ich einen einfachen Holzspalter. - sekrett
Mein Anwendungsfall für diese Konfiguration ist: Ich möchte mein Protokoll für immer behalten, da ich es zu Prüfzwecken brauche, ABER ich möchte, dass meine Dateien so gedreht werden, dass das aktuelle Protokoll nicht zu groß wird und die gedrehten nicht komprimiert - andernfalls ist das Sichern der Protokolle auf einem externen Server zu schwierig, und das Überprüfen der Dateien wird ebenfalls zu langsam. - Rudolf Mayer


Antworten:


Ändern Sie in Ihrer logrotate.conf (oder der äquivalenten logrotate.d-Datei) die Zeile, die besagt "

rotate 10

(Ihre Nummer kann anders sein) zu einer größeren Anzahl. Das wird ihm sagen, dass er die vielen Tage der Stämme behalten soll. Sie können es 36500 machen, was Sie 100 Jahre dauern würde.


28
2017-08-05 04:45



Als ich das auf einem Himbeer-Pi (Raspian) machte, ließ es jede Nacht einfrieren. Sobald ich Prozesse laufen liess und Dateien mit der seriellen Konsole öffne und herausfand, dass es versucht 100000 nicht existierende Dateien umzubenennen. Also hüte dich davor. Leider habe ich keine ausführlicheren Informationen - Christian


Ich habe danach gesucht, um meine Datenbanksicherungen täglich, wöchentlich und monatlich zu drehen; also rotiere ich die Datei täglich, aber behalte die Datei für die wöchentliche Rotation und für die jährliche Rotation.

Verwenden Sie die Kopieroption. Aus dem Handbuch:

copy

Kopieren Erstellen Sie eine Kopie der Protokolldatei, aber ändern Sie das Original überhaupt nicht. Diese Option kann beispielsweise verwendet werden, um einen Snapshot 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 unverändert bleibt.


0
2017-11-22 10:32



Dies ist das gleiche wie der Kommentar unten (serverfault.com/a/50186/275485) und liefert keine korrekte Antwort; Kopieren bedeutet nicht, dass Ihre alten Dateien, die gedreht wurden, nicht gelöscht werden. - Rudolf Mayer


Den Punkt beiseite lassen, an dem die Rotation das Löschen beinhaltet ... ;-)

Es sieht so aus, als könnten Sie einfach das Wort 'copy' in die entsprechende Datei einfügen (wahrscheinlich in /etc/logrotate.d). Zum Beispiel würde ein Apache2-Logrotate-Skript wie folgt aussehen:

/var/log/apache2/*.log {
    wöchentlich
    missingok
    rotiere 52
    komprimieren
    verzögernkomprimieren
    notifempty
    Kopieren
    SharedScripts
    postrotieren
        if [-f "`. / etc / apache2 / envvars; echo $ {APACHE_PID_FILE: - / var / run / apache2.pid} `"]; dann
            /etc/init.d/apache2 reload> / dev / null
        fi
    Endscript
}

Probieren Sie es aus und sehen Sie, ob es das tut, was Sie wollen.


-2
2017-08-05 04:45



Angenommen, er möchte, dass die Dateien "gedreht" werden, aber niemals die alten Dateien löschen, wird dies nicht funktionieren. Hinzufügen von "Kopieren" in die Konfig-Zeilengruppe bedeutet, dass die Originaldatei für immer weiter wächst, aber eventuell die älteren Kopien der Datei gelöscht werden. 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, und genau das habe ich mir gewünscht. Er fragte speziell nach einer Möglichkeit, "meine Log-Dateien nicht zu löschen", und keine Möglichkeit, "alte Archive meiner Log-Dateien nicht zu löschen". Sch sch 100 sch 100 sch 100 sch 100 sch 100 sch 100 sch sch 100 100 sch sch 100 100 sch sch sch sch sch sch 100 100 100 sch sch sch sch zwischen - Justin Ellison
Der Ausdruck "nach Rotation" liefert einen Hinweis. - Dennis Williamson
"Den Punkt beiseite stellen, an dem die Rotation das Löschen beinhaltet ..."  Nicht unbedingt. Rotation kann nur die alten Protokolle komprimieren und halten, was die Frage ist, nach der sie zu fragen scheint. - reflexiv