Warum enthält der Syslog-Zeitstempel kein Jahr?

9

Ich plane, einige meiner Protokollnachrichten länger als ein Jahr zu speichern, aber die Beschreibung des Syslog-Zeitstempels aus RFC3164 enthält kein Jahr im Zeitstempelteil eines Protokolleintrags. Ein Beispiel für einen Zeitstempel, den ich in meinen CentOS-Protokollnachrichten gefunden habe, ist Mar 16 07:46:24.

RFC5424 soll RFC3164 überflüssig machen, aber es scheint unter Betriebssystemen sehr verbreitet zu sein, ein mmm ddDatum in Protokollen zu verwenden. RFC5424 ist sechs Jahre alt, daher bin ich überrascht, dass es nicht Standard ist. Warum war in RFC3164 kein Jahr enthalten? Sollen Protokolle nur vorübergehend sein? Was ist der Grund dafür, dass heute kein Jahr in die Protokolle aufgenommen wird?

Sean Fahey
quelle
Aus praktischer Sicht sind beim Drehen von Protokolldateien zusätzliche Informationen aus dem Dateinamen oder den Dateimetadaten der gedrehten Datei verfügbar.
Ulrich Schwarz
Hilft das Erstellungsdatum der Protokolldatei nicht?
Milind Dumbare
5
Ich vermute, dass "Kompatibilität mit Syslog-Protokollen im BSD-Stil von 35 Jahren" der Grund ist, habe aber keinen dokumentierten Beweis. Wenn Sie schließlich wechseln systemd(Widerstand ist zwecklos), können Sie journalctl‚s -o short-isoOption echte ISO 8601 - Zeitstempel zu erhalten.
Mark Plotnick
@MilindDumbare Leider ist das Erstellungsdatum der Protokolldatei nicht zuverlässig. Protokolldateien können vor der Analyse kopiert werden. Außerdem ermöglicht Syslog das Verschieben von Nachrichten von Maschine zu Maschine, sodass das Erstellungsdatum auf dem Computer, auf dem die Syslog-Nachrichten gesammelt werden, möglicherweise nichts mit dem Ort zu tun hat, an dem sie gesendet wurden. Sie können sogar in einer Datenbank und nicht in einer Datei gesammelt werden.
vy32
Jeder, der nach einer Referenz sucht, kann @MarkPlotnick sicherlich als Referenz verwenden. Er ist auch schon eine Weile ... Siehe: books.google.com/…
vy32

Antworten:

4

Wenn Sie Ihrer Syslog-Ausgabe benutzerdefinierte Zeitstempel hinzufügen möchten , ist es möglicherweise am besten, diese zu verwenden syslog-ng.

Laut diesem Beitrag können Sie ts_format()das Jahr in angeben syslog-ng.

Laut syslog-ng.conf(5)Manpage:

Die Syslog-ng-Anwendung verfügt über eine Reihe globaler Optionen für die DNS-Nutzung, das verwendete Zeitstempelformat und andere allgemeine Punkte. Jede Option kann Parameter haben, ähnlich wie die Treiberspezifikationen. Fügen Sie der Konfigurationsdatei syslog-ng mithilfe der folgenden Syntax eine Optionsanweisung hinzu, um globale Optionen festzulegen:

options { option1(params); option2(params); ... };

AppAraat
quelle
0

Das Jahr ist nicht enthalten, da das Syslog-Format aus den 1980er Jahren stammt und die Programmierer damals weniger vorsichtig waren. Die meisten Protokolldateien wurden für Menschen geschrieben, um sie zu lesen und nicht automatisch zu analysieren, und jeder wusste, welches Jahr es war.

vy32
quelle
1
Haben Sie eine Referenz dafür mit einem genaueren Datum als "die 1980er Jahre"? (Abschnitt 5.1 von RFC3164 wäre ein guter Anfang.) Diese Antwort ist derzeit recht vage und sieht aus wie eine Vermutung oder Meinung.
JigglyNaga
Nun, ich habe 1984 angefangen, BSD 4.2 Unix zu verwenden. Syslog erschien in BSD 4.2, und dann wurde die Entscheidung getroffen, Monat und Tag, aber nicht das Jahr einzugeben. ( webcache.googleusercontent.com/… )
vy32
Siehe Kommentar oben zu Mark Poltnick.
vy32