GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Protokollrotation von stdout?

Als Alternative könnten Sie die Ausgabe durch Tools leiten, die mit dem primären Zweck entwickelt wurden, größenbegrenzte, automatisch rotierte Protokolldateisätze zu verwalten, wie zum Beispiel:

  • Dan Bernsteins multilog von Daemontools
  • Bruce Guenters multilog von daemontools-encore
  • Laurent Bercots s6-log ab s6
  • Gerrit Papes svlogd von runit
  • Wayne Marshalls tinylog von Täter
  • Mein cyclog von nosh

Tools, um dann multilog zu verarbeiten -Format-Protokolldateisätze umfassen unter anderem:

  • Russ Allberys multilog-watch
  • logrange
  • Paul Kremers multilog-stamptail
  • Mein follow-log-directories von nosh
  • Mein export-to-rsyslog von nosh

Weiterführende Literatur

  • Jonathan de Boyne Pollard (2015). "Protokollierung". Die Daemontools-Familie . Häufig gegebene Antworten.
  • Jonathan de Boyne Pollard (2016). Verwenden Sie nicht logrotate oder newsyslog in diesem Jahrhundert. . Häufig gegebene Antworten.
  • https://unix.stackexchange.com/a/326166/5132

die rotatelogs Werkzeug, das mit Apache geliefert wird (in der Datei bin dir) (siehe Dokumentation) nimmt Eingaben von stdin entgegen und rotiert das Protokoll nach einer bestimmten Zeit


Ich hatte ein ähnliches Problem und musste logrotate zunächst verwerfen, aber es stellte sich heraus, dass logrotate dies tatsächlich gut kann, die Schlüsseldirektive ist "copytruncate ". Aus irgendeinem Grund tauchte dieser Begriff beim Googeln nicht auf, also füge ich diese Antwort hinzu, um genau zu verdeutlichen, wie man ihn in diesem Fall verwendet.

Der Trick ist, dass dies nur funktioniert wenn die Weiterleitung mit ">> erfolgt " (anhängen) statt "> " (erstellen).

Konfigurationsdatei (truncate.cfg):

/tmp/temp.log {
    size 10M
    copytruncate
    rotate 4
    maxage 100
}

Testprogramm (gibt niemals Datei auf). Sie können beobachten, wie es die Festplatte füllt, und obwohl das Löschen der Protokolldatei zu funktionieren scheint, wird es nicht wirklich Speicherplatz auf der Festplatte freigeben:

cat /dev/urandom >> /tmp/temp.log

Laufende Protokollrotation:

logrotate truncate.cfg

Linux
  1. So leiten Sie die Ausgabe in eine Datei und Stdout in Linux um

  2. Befehl zum Ausgeben von Dateiinhalten an Stdout?

  3. Firefox-Protokolldatei finden?

  4. So verwenden Sie Logrotate zum Verwalten von Protokolldateien

  5. So erstellen Sie eine benutzerdefinierte Protokolldateirotation von logrotate in Linux

So leiten Sie stderr in Bash auf stdout um

So ändern Sie die Standard-Sudo-Protokolldatei in Linux

Logrotate unter Linux einrichten

Protokolldateirotation

Finden Sie heraus, welcher Prozess eine Datei ändert

systemd-Dienstprotokolle in eine Datei umleiten