Ich habe ein einfaches Programm, datelog, geschrieben, um allgemeine Protokolle basierend auf dem protokollierten Datum zu teilen, im Gegensatz zur aktuellen Systemzeit, wenn die Protokollzeile vom Programm gesehen wird. Dies kann oder kann nicht genau das sein, was cronolog oder ein anderer Protokollteiler bereits tut, aber es war schneller, meine eigenen zu schreiben, als herauszufinden, was andere tun.
Unter Verwendung von Jahr und Monat in der protokollierten Anforderung wird die Zeile dann in eine Datei oder Pipe geschrieben, die das aus den protokollierten Daten berechnete JJJJMM enthält. Ja, dies ist etwas spezifisch für das übliche Protokollformat. Es wird angenommen, dass das erste [das Datum begrenzt. Vorsicht vor IPv6-Adressen. :)
Für die Protokollanalyse ist es wichtig, dass jedes Protokoll wirklich nur die Anforderungen für den jeweiligen Monat enthält. Idealerweise sollte jedes Protokoll vollständig sein, um korrekte Analyseergebnisse zu erzielen. Es reicht nicht aus, den Dateinamen anhand der aktuellen Zeit im Protokollteiler zu ermitteln, da eine langsame Anforderung ab 23:59:59 dann für den falschen Monat in der Protokolldatei endet.
Ich verwende dies mit nginx über ein benanntes FIFO, das vor dem Start von nginx auf Existenz überprüft wird. Beachten Sie, dass es im Programm einen Kompromiss zwischen Fehlererkennung und gepufferter Ausgabe gibt, bei dem die Datenprotokollierung derzeit aus Leistungsgründen die gepufferte Ausgabe bevorzugt. Stellen Sie daher sicher, dass Ihr Setup wirklich funktioniert, insbesondere bei Verwendung von Shell-Pipes, damit keine Protokolldaten verloren gehen .
Quellcode: http://stuge.se/datelog.c
Bitte senden Sie mir Feedback und natürlich Patches!