Verwechseln mit syslog message format
Ich bin ein bisschen verwirrt darüber, syslog-message-format. Ich muss ein Programm schreiben, analysiert syslog-Nachrichten. Wenn ich lese, was ich in meinem syslog-ng-Instanz bekomme ich Meldungen wie diese:
Jan 12 06:30:00 1.2.3.4 apache_server: 1.2.3.4 - - [12/Jan/2011:06:29:59 +0100] "GET /foo/bar.html HTTP/1.1" 301 96 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 ( .NET CLR 3.5.30729)" PID 18904 Time Taken 0
Kann ich ganz klar bestimmen, die eigentliche Botschaft (die ist in diesem Fall ein Apache-access-log-Meldung) Der rest ist Metadaten über die syslog-Nachricht selbst.
Aber wenn ich lese das RFC 5424 die Nachricht Beispiele Aussehen:
ohne strukturierte Daten
<34>1 2003-10-11T22:14:15.003Z mymachine.example.com su - ID47 - BOM'su root' failed for lonvick on /dev/pts/8
oder mit strukturierten Daten
<165>1 2003-10-11T22:14:15.003Z mymachine.example.com evntslog - ID47 [exampleSDID@32473 iut="3" eventSource="Application" eventID="1011"] BOMAn application event log entry...
So, jetzt bin ich ein bisschen verwirrt. Was ist die richtige syslog message format ? Es ist eine Frage der spec-version, wo RFC 5424 veraltet RFC 3164 ?
InformationsquelleAutor der Frage qwix | 2012-02-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem in diesem Fall ist, dass apache bei der Anmeldung über die standard-syslog(3) oder über logger. Dies unterstützt nur die alten (RFC3164) syslog-format, d.h. es gibt keine strukturierten Daten hier.
Um die Felder aus der apache-log zeigen, wie RFC5424 strukturierte Daten, apache würde zu formatieren müssen Sie das Protokoll so.
Dem ersten Beispiel ist nicht richtig RFC3164 syslog, weil der Wert für die Priorität ist ausgezogen aus dem Kopf. Richtige RFC3164-format würde wie folgt Aussehen:
Traditionell rfc3164 syslog-Nachrichten werden in Dateien gespeichert, mit dem priority-Wert entfernt.
Die anderen beiden sind in RFC5424 format.
InformationsquelleAutor der Antwort b0ti
Wenn Sie Zugriff auf die installierte syslog-daemon auf dem system, das Sie konfigurieren können es zum schreiben der Protokolle (sowohl lokal oder über Netzwerk), die in einem anderen format. rsyslogd zum Beispiel erlaubt, konfigurieren Sie Ihr eigenes format (nur eine Vorlage schreiben) und auch, wenn ich mich richtig erinnere hat eine built-in template speichern im json-format. Und es gibt Bibliotheken, die in fast jeder Sprache zu Parsen von json.
InformationsquelleAutor der Antwort Alexander Stumpf