Frage Wie wird das Protokoll basierend auf einem Intervall gedreht, es sei denn, Protokoll überschreitet eine bestimmte Größe?


Von der man-Seite von logrotate:

Minisize  Größe
      Protokolldateien werden rotiert, wenn sie größer als die Größe von Bytes werden, jedoch nicht vor dem zusätzlich angegebenen Zeitintervall (täglich, wöchentlich,   monatlich oder jährlich). Die zugehörige Größenoption ist ähnlich, außer dass sie   schließt sich gegenseitig mit den Zeitintervalloptionen aus, und es verursacht   Protokolldateien werden ohne Rücksicht auf die letzte Rotationszeit gedreht.   Wenn minsize verwendet wird, sind sowohl die Größe als auch der Zeitstempel einer Protokolldatei   berücksichtigt.

Größe  Größe
      Protokolldateien werden gedreht, wenn sie größer als die Größe von Bytes werden. Wenn auf die Größe k folgt, wird die Größe in Kilobyte angenommen. Wenn die   M wird verwendet, die Größe ist in Megabyte, und wenn G verwendet wird, ist die Größe in   Gigabyte. So Größe 100, Größe 100k, Größe 100M und Größe 100G alles   gültig.

ich setze Größe wie 5M und Intervall wie wöchentlich Denken Sie daran, dass die Protokolle wöchentlich rotieren würden und eine zusätzliche Rotation auftreten würde, wenn die Größe des Protokolls 5M überschreitet. Aber was passiert ist, dass das Protokoll nicht gedreht wird, es sei denn, es übersteigt 5M, was zu sein scheint Minisize soll tun.

Interpretiere ich das Handbuch falsch? Wie kann ich das Protokoll wöchentlich rotieren UND wenn es 5M überschreitet?

BEARBEITEN:

Ich bin mir nicht sicher, ob die folgenden Informationen relevant sind, sondern nur um zu ergänzen:

Ich benutze Rsyslog, um die Hauptprotokollierung für Nachrichten, Secure, Cron, Maillog, Boot zu machen. Es folgen das Rotationsdatum und die Dateigröße der vorletzten Protokolle, in denen Größe und Intervall wie oben beschrieben festgelegt sind:

filename  rotation date  file size
messages  20130129       5.3MB
secure    20130113       5.1kB
cron      20130113       3.6kB
maillog   20130113       1.1kB

Wie zu sehen ist, werden nur Nachrichten rotiert.

EDIT2:

Ich sollte mich erkundigen man logrotate. Sie haben es tatsächlich mit dem aktualisiert maximale Größe Möglichkeit. Das sollte das sein wonach ich suche:

maximale Größe  Größe
                Protokolldateien werden rotiert, wenn sie größer als die Größe von Bytes werden                 vor dem zusätzlich angegebenen Zeitintervall (täglich, wöchentlich,                 monatlich oder jährlich). Die zugehörige Größenoption ist ähnlich außer                 dass es sich gegenseitig mit den Zeitintervalloptionen ausschließt,                 und es bewirkt, dass Protokolldateien gedreht werden, ohne Rücksicht auf die                 letzte Rotationszeit. Wenn maxsize verwendet wird, werden sowohl die Größe als auch die Größe verwendet                 Zeitstempel einer Protokolldatei werden berücksichtigt.


19
2018-02-03 13:46


Ursprung




Antworten:


Einige Fragen werden hier beantwortet:   logrotate täglich und Größe?

In der Regel logrotate wird nur einmal täglich ausgeführt, so dass die Größenbeschränkungen nicht genau eingehalten werden. logrotate's Statusdatei (möglicherweise /var/lib/logrotate.status) speichert nur Daten (nicht Zeiten), es ist nicht für die häufigere Verwendung gedacht, so dass Sie Dateien nicht häufiger routinemäßig drehen können (Aktualisieren: Version 3.85 fügt hinzu stündlich unterstützt und speichert einen vollständigen Zeitstempel in der Statusdatei.)

Du sagst nicht was syslogd du benutzt, rsyslog und Syslog-ng Selbstverwaltete größenbasierte Rotation unterstützt, so sollten Sie in der Lage sein, diese nach Größe zu drehen und zu bekommen logrotate wöchentlich rotieren (obwohl einige Überlegungen für die Dateibenennung erforderlich sein könnten, um sicherzustellen, dass die gleichzeitige Dateirotation nicht versehentlich etwas löscht).

Eine andere Option ist die Verwendung von Piped Logs, genau wie Apache, in der Tat Apache-2.4 rotatelogs  unterstützt genau diese Funktion (frühere Versionen haben nur Größe oder Zeit unabhängig unterstützt). Sie sagen nicht, woher die Protokolle stammen, aber Sie können sich möglicherweise bei einer Pipe oder einem FIFO anmelden und verwenden rotatelogs, wenn das unterstützt wird.

Mit logrotate <= v3.8.0 Die drei unterstützten Szenarien sind:

  1. Größe  rotieren nach Größe, höchstens einmal täglich, unabhängig von der verstrichenen Zeit
  2. Zeitperiode   Rotation unabhängig von der Größe unabhängig von der Zeitperiode
  3. Minisize & Zeitperiode   Wenn die Größe der Protokolldatei die Mindestgröße überschreitet, rotieren Sie nach Zeitraum. Eine häufige Verwendung ist "minsize 1", was bedeutet, dass 0-Byte-Protokolle nicht gedreht werden, wodurch Unordnung minimiert wird.

logrotate-3.8.1 fügt hinzu:

  1. maximale Größe & Zeitperiode   rotieren, wenn eine der beiden Größen die maximale Größe oder die verstrichene Zeit überschreitet. logrotate muss in diesem Fall möglicherweise mehr als die Standardeinstellung einmal pro Tag ausgeführt werden.

logrotate-3.8.5 fügt hinzu:

  1. stündlich unterstützt und speichert einen vollständigen Zeitstempel in der Statusdatei. Du solltest rennen logrotate (mindestens) stündlich dafür.

19
2018-02-03 14:46



Bitte sehen Sie mein Update, danke für den Link. Scheint wie etwas Scripting benötigt wird? minsize scheint nicht sehr nützlich, ich frage mich, warum sie es anstelle von maxsize haben. - Question Overflow
Ja, die Maxsize-Option ist jetzt verfügbar. Fall schließen :) - Question Overflow
entdeckte das in den Dokumenten, bevor ich Ihr Update las ... Antwort jetzt erweitert. Vielen Dank. - mr.spuratic
> Die Statusdatei von logrotate (möglicherweise /var/lib/logrotate.status) speichert nur Daten (nicht Zeiten) Diese Anweisung ist möglicherweise veraltet. Ich habe gerade meine Logrotate-Statusdatei überprüft, und sie enthielt Zeitstempel mit der zweiten Auflösung: "/var/log/kern.log" 2018-3-12-1: 8: 16 - hyperair
@ Hyperair, danke, aktualisiert! - mr.spuratic