Dan Bernsteins Multilog kann dies anscheinend tun - oder vielleicht das meiste davon, während er dem Prozessor einen Ausgang über Dateideskriptoren zur Verfügung stellt , um den Unterschied zu kompensieren, wie Sie möchten - obwohl die Größenangaben für 20M / 1G möglicherweise ein wenig ins Wanken geraten, da es den Anschein haben, dass es sich um 16M handelt Außengrenze pro Protokoll. Was folgt , ist in der Mehrzahl, + eine Kopie Auswahl aus dem obigen Link einfügen, obwohl auch der Link andere Optionen Details wie timestamping pro Zeile, die Aufrechterhaltung [eine] andere Datei [s] nur die letzte Leitungsanpassung enthält , Muster und mehr .
Schnittstelle
multilog script
... Skript besteht aus beliebig vielen Argumenten. Jedes Argument gibt eine Aktion an. Die Aktionen werden für jede Eingabezeile in der richtigen Reihenfolge ausgeführt.
Linien auswählen
Jede Zeile ist anfänglich ausgewählt. Die Aktion...
-pattern
... hebt die Auswahl der Linie auf, wenn das Muster mit der Linie übereinstimmt. Die Aktion...
+pattern
Wählt die Linie aus, wenn das Muster mit der Linie übereinstimmt.
... Muster ist eine Reihe von Sternen und Nicht-Sternen. Es stimmt mit jeder Verkettung von Zeichenfolgen überein, die von allen Sternen und Nicht-Sternen in derselben Reihenfolge abgeglichen werden. Ein Nicht-Star passt zu sich. Ein Stern vor dem Ende des Musters entspricht einer Zeichenfolge, die nicht das nächste Zeichen im Muster enthält. Ein Stern am Ende des Musters entspricht einer beliebigen Zeichenfolge.
Automatisch gedrehte Protokolle
Wenn dir mit einem Punkt oder Schrägstrich beginnt, dann ist die Aktion ...
dir
... hängt jede ausgewählte Zeile an ein Protokoll mit dem Namen dir an . Wenn dir nicht existiert, multilog
wird es erstellt.
Das Protokollformat lautet wie folgt:
dir ist ein Verzeichnis, das einige alte Protokolldateien, eine Protokolldatei mit dem Namen current und andere Dateien enthält multilog
, um die Aktionen zu verfolgen.
Jede alte Protokolldatei hat einen Namen, der mit @ beginnt , mit einem genauen Zeitstempel fortfährt, der anzeigt, wann die Datei fertig ist, und mit einem der folgenden Codes endet:
- .s : Diese Datei wird vollständig verarbeitet und sicher auf die Festplatte geschrieben.
- .u : Diese Datei wurde im Moment eines Ausfalls erstellt. Möglicherweise wurde es abgeschnitten. Es wurde nicht verarbeitet.
Die Aktion...
ssize
... legt die maximale Dateigröße für nachfolgende dir- Aktionen fest. multilog
wird entscheiden , dass Strom ist groß genug , wenn Strom hat eine Größe bytes. ( multilog
Entscheidet auch, dass current groß genug ist, wenn eine neue Zeile innerhalb von 2000 Byte der maximalen Dateigröße angezeigt wird. Es wird versucht, die Protokolldateien an den Zeilengrenzen zu beenden.) Die Größe muss zwischen 4096 und 16777215 liegen. Die maximale Standarddateigröße beträgt 99999.
In den Versionen 0.75 und höher: Wenn multilog
ein ALRM- Signal empfangen wird, wird sofort entschieden, dass der Strom groß genug ist, wenn der Strom nicht leer ist.
(Hinweis: Ich vermute, dass das zsh
schedule
eingebaute Programm leicht dazu gebracht werden kann, ALRM
bei Bedarf in bestimmten Abständen ein E-Mail zu senden .)
Die Aktion...
nnum
... legt die Anzahl der Protokolldateien für nachfolgende Verzeichnisaktionen fest . Nach der Umbenennung Strom , wenn multilog
sieht num oder mehrere alte Log - Dateien, entfernt es die alte Protokolldatei mit dem kleinsten Zeitstempel. num muss mindestens 2 sein. Die Standardanzahl der Protokolldateien beträgt 10.
Die Aktion...
!processor
... setzt einen Prozessor für nachfolgende dir- Aktionen. multilog
speist Strom durch den Prozessor und speichert die Ausgabe als alte Protokolldatei anstelle von Strom . multilog
speichert auch alle Ausgaben, die der Prozessor in Deskriptor 5 schreibt, und macht diese Ausgabe für Deskriptor 4 lesbar, wenn der Prozessor in der nächsten Protokolldatei ausgeführt wird. Aus Gründen der Zuverlässigkeit muss der Prozessor den Modus ungleich Null beenden, wenn beim Erstellen der Ausgabe Probleme auftreten. multilog
werde es dann nochmal laufen lassen. Beachten Sie, dass der laufende Prozessor möglicherweise alle Programmeingaben blockiert multilog
.