Frage logrotate täglich und Größe?


Wenn eine logrotate-Konfiguration mit den Parametern "size" und "daily" angegeben ist, welche hat Vorrang? Wo ist das dokumentiert? Ich möchte, dass diese Drehungen als boolesche ODER-Operation auftreten, dh wenn die Logs einen Tag alt sind, werden sie gedreht, ODER wenn sie größer als eine bestimmte Größe sind, werden sie auch rotiert. Allerdings verwendet logrotate derzeit nur die "size" -Richtlinie und scheint die "daily" -Richtlinie zu ignorieren. Logrotate ist so eingerichtet, dass es jede Stunde läuft. OS ist Linux, Red Hat und Debian-Derivate.

Außerdem gebe ich zuerst "täglich" und dann "Größe" vom Anfang der Datei an. Nicht sicher, ob die Bestellung wichtig ist, aber in jedem Fall muss man zuerst in der Konfigurationsdatei stehen ...

Vielen Dank!


38
2018-05-22 17:54


Ursprung


Siehe auch serverfault.com/questions/474941/... - belacqua
> lokale Definitionen überschreiben globale und spätere Definitionen> überschreiben frühere von der Manpage von logrotate 3.8.7 - John Bob Joe


Antworten:


Wenn die Größe Direktive wird verwendet, logrotate ignoriert die Täglich, wöchentlich, monatlich, und jährlich Richtlinien. Dies ist in der Dokumentation nicht klar, wenn Sie das ausführen man logrotate Befehl. Es kann jedoch in der Praxis bestätigt werden und wird in einigen willkürlichen Blogposts erwähnt wie dieser.

Es gibt eine Richtlinie namens Minisize was laut der logrotate man-Seite die einzige Größen-Direktive ist, die in Verbindung mit der Zeit verwendet werden kann. Allerdings ist es immer noch nicht das, was Sie wollen. Verwenden Minisize mit Täglich sagt im Wesentlichen: rotiere die Logs täglich, aber nur wenn sie mindestens #MB groß sind.

Bis heute habe ich mit logrotate keine Möglichkeit gefunden, die von Ihnen gewünschte Bedingung zu erfüllen: Drehen Sie jeden Tag, es sei denn, die Größe überschreitet #MB, in diesem Fall sofort drehen. Ich denke nicht, dass dies nur mit Hilfe von Logrotate-Direktiven unterstützt wird. Es könnte möglich sein, mit einigen cleveren Scripting über die Skript-Hook-Direktiven wie vorrotatieren, postrotieren, Erstaufstellung, und letzte Aktion.

Aktualisieren:

Ab logrotate 3.8.1, maxsize und timeperiod werden zusammen unterstützt, was die ideale Lösung wäre. Siehe die Antwort zu diesem Post: Wie wird das Protokoll basierend auf einem Intervall gedreht, es sei denn, Protokoll überschreitet eine bestimmte Größe?


53
2017-10-03 23:29



Die beste Option wäre wahrscheinlich, zwei separate cron-Befehle zu verwenden, die täglich mit dem Standardconf ausgeführt werden, und alle x Minuten, die eine Konfiguration nur mit den Dateien aufnehmen, die Sie wegen des Überlaufs mit der Größenanweisung und nicht mit dem täglichen Problem machen. - SilverbackNet
Ab logrotate 3.81, maxsize und timeperiod sind unterstützt. Pro serverfault.com/questions/474941/... - belacqua
@ Belacqua Ich benutze 3.8.7 und Zeitperiode ist nicht in dem Mann. - JorgeeFG
Die richtige Version ist eigentlich 3.8.1, nicht 3.81. - Tom Miller


Wenn Sie Täglich hinzufügen, wird es jeden Tag rotieren, auch wenn die Größenbedingung erfüllt ist. Wenn Sie auch die Größenbedingung hinzufügen, erhalten Sie möglicherweise zwei Umdrehungen an einem Tag, je nachdem, wie ausführlich die Protokollierung ist.

Wenn Daily im Skript zuerst geht, wird Größe möglicherweise nicht ausgelöst.


1
2018-05-22 18:11



Verwenden Sie die ausführliche Option, um zu sehen, welche Regeln verwendet werden. Von meinen Tests glaube ich, dass nur die letzte Regel verwendet wird, weil spezifischere Regeln allgemeinere Regeln außer Kraft setzen können. - Bram
Mehr Rotationen sind in Ordnung, da dies das erwartete Verhalten wäre. (Boolean ODER) Mein Problem ist jedoch, dass diese Rotationen nicht auftreten. Es scheint ein Bug (möglicherweise ein Feature) von log rotieren zu sein, da ich nicht sehen kann, dass die Reihenfolge der Anweisungen irgendwo wichtig oder dokumentiert ist. - cat pants
Können Sie ein Beispiel für Ihre logrotate.conf und die Dateien geben, auf die Sie abzielen? Täglich hat keine andere Bedingung als Zeitprogression. Die Größe ist bedingt. - Paul Hickox
/tmp/output.log {tägliche Größe 1k rotiere 5} - cat pants
Diese Datei wird gedreht, wenn die Größe größer als 1k ist, aber es ist nicht rotiert täglich wie erwartet und gewünscht. - cat pants


Eigentlich scheint meine Manpage auf Red Hat bei den Unterschieden zwischen Größe und Minsize ziemlich klar zu sein:

Min. Größe

          Log  files  are rotated when they grow bigger then size bytes,
          but  not  before  the  additionally  specified  time  interval
          (daily,  weekly, monthly, or yearly).  The related size option
          is similar except that it is mutually exclusive with the  time
          interval  options, and it causes log files to be rotated with-
          out regard for the last rotation time.  When minsize is  used,
          both the size and timestamp of a log file are considered.

1
2017-08-01 16:12





Die erste Antwort von @egg ist nach meinen Erfahrungen mit Logrotate nicht wahr!

Ob täglich, monatlich, ... Kommen Sie zuerst und danach Größe Richtlinie täglich, monatlich, ... wird ignoriert und Größe Direktive wird auf die Protokolldatei angewendet.

Ähnlich, wenn ich das erste Mal benutze Größe Richtlinie dann täglich, wöchentlich, monatlich und jährlich Richtlinien, die Größe Direktive wird ignoriert.


1
2017-09-16 11:25