EisFuX: logfile parsen

Beitrag lesen

Nabend,

moin!

ich würde gern ein logfile mittels php auswerten, welches mein router an einen syslog-server gesendet hat.
die einträge sehen wie folgt aus:

Jan 27 11:19:10 192.168.1.1 Vigor: Local User: 192.168.1.64:1562 -> 216.239.59.104:80 (TCP)Web

damit ich das log auswerten kann, muss ich zunächst alle werte in ein array bekommen. leider gibt es kein trennzeichen zwischen den einzelnen spalten ("Vigor: Local User:" schießt da ein wenig quer).

Dann sieht ein Logfile-Eintrag aber eher so aus:
Jan 27 11:19:10 192.168.1.1 "Vigor: Local User:" 192.168.1.64:1562 -> 216.239.59.104:80 (TCP)Web

Zerleg den String doch erstmal an den "Gänsefüßchen":

$log_entry = 'Jan 27 11:19:10 192.168.1.1 "Vigor: Local User:" 192.168.1.64:1562 -> 216.239.59.104:80 (TCP)Web';

$bla = explode('"', $log_entry);

Jetzt hast du drei Teile, von denen du den mittleren behältst, und die anderen beiden weiter zerlegen kannst:

$blo = explode(' ', $bla[0]);
$bla = $bla[1];
$bli = explode(' ', $bla[2]);

Das sollten jetzt drei Arrays sein, die folgende Inhalte haben:

$blo:
[0] => 'Jan'
[1] => '27'
[2] => '11:19:10'
[3] => '192.168.1.1'

$bla:
[0] => 'Vigor: Local User:'

$bli:
[0] => '192.168.1.64:1562'
[1] => '->'
[2] => '216.239.59.104:80'
[3] => '(TCP)Web'

Die kannst du jetzt "zusammenstricken" ... ;-)

MffG
EisFuX

--
... Suchmaschinen-Blog ...