Sono un po 'confuso riguardo al formato del messaggio syslog. Devo scrivere un programma che analizzi i messaggi syslog. Quando ho letto ciò che ho nel mio esempio syslog-ng ricevo messaggi come questo:Confuso con il formato messaggio syslog
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
posso determinare chiaramente il vero messaggio (che è, in questo caso, un messaggio di log di accesso Apache) Il resto è metadati relativi il messaggio syslog stesso.
Tuttavia quando ho letto la RFC 5424 gli esempi di messaggi assomigliano:
senza dati strutturati
<34>1 2003-10-11T22:14:15.003Z mymachine.example.com su - ID47 - BOM'su root' failed for lonvick on /dev/pts/8
o con dati strutturati
<165>1 2003-10-11T22:14:15.003Z mymachine.example.com evntslog - ID47 [[email protected] iut="3" eventSource="Application" eventID="1011"] BOMAn application event log entry...
Così ora sono un po 'confuso. Qual è il formato del messaggio syslog corretto? È una questione di versione spec in cui RFC 5424 obsoleto è RFC 3164 obsoleto?
Ok, quindi credo che sia normale vedere quasi tutti i messaggi di registro in formato RFC3164 anziché RFC5424 perché è lì da molto tempo. Il che significa anche che devo scrivere un parser che supporti entrambe le specifiche. Conosci qualche biblioteca (non importa la lingua) che già lo fa? – qwix
Perché non utilizzare uno strumento esistente come syslog-ng, rsyslog o [nxlog] (http://nxlog.org)? (nota che sono affiliato a quest'ultimo). Se devi analizzare questo dal tuo programma, probabilmente sceglierei un linguaggio di scripting che possa facilmente gestire file di testo, come perl o python. – b0ti
Ho bisogno di analizzare questi messaggi dal mio programma. Penso che userò Python. Ma per qualche ragione analizzare i messaggi di syslog non sembra così semplice come pensavo. Probabilmente perché ho bisogno di supportare due specifiche di differenza. Credo che sia il momento perfetto per iniziare a scrivere test unitari. Grazie per la tua risposta :) – qwix