Hallo,
Ich möchte gern meine Apache-Logs live in eine MySQL-DB
schreiben.
Dann würde ich die PerlLogHandler-Direktive von Apache verwenden - die ist genau für solche Sachen gedacht. Als Beispiel, das diese Schnittstelle verwendet, kenne ich Apache::SearchEngineLog http://verplant.org/SearchEngineLog/
Außerdem ist mir auch noch nicht ganz klar, wie ich am besten
die Spalten trenne.
Das geht nicht so einfach. Zwischen den einzelnen Einträgen sind zwar Leerzeichen, aber die Einträge können auch Leerzeilen enthalten.
Ich habe ein Perlscript geschrieben, dass auf Apache-Logs im „cobined“-Format (das gebräuchlichste, glaube ich) losgeht. Das verwendet diesen Code:
if (m/^([^]\*) ([^]\*) ([^]\*) \[([^\]]+)\] "((?:[^"]|\\")\*?)" (\d+) (-|\d+) "((?:[^"]|\\")\*)" "((?:[^"]|\\")\*)"/){
my ($ip, $ignore, $remote\_user, $date, $request, $status,
$size, $ref, $ua)
= ($1, $2, $3, $4, $5, $6, $7, $8, $9);
Die Variablennamen sollten fast Selbsterklärend sein ($ref steht für den Referer, $ua für den User Agent).
Hast du mal gesucht, ob es schon ein kleines Programm gibt, das genau das tut, was du willst?
Grüße,
Moritz