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
odernewsyslog
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