Seite 1 von 1

Logfile in Datenbank speichern

Verfasst: 03.04.2010, 12:07
von cybermage
Hallo!

Also ... ich hab meine Logfiles im Standard Apache Format (apache.log.1.gz) und möchte diese in eine Datenbank speichern. Am liebsten wäre mir eine Access DB zur Not geht auch MySQL.

Die Dateien entzippen....ok
Aber ich hab dann in den einzelnen Zeilen folgenden Eintrag:

- [05/Mar/2010:01:06:32 +0100]

Den würde ich gerne splitten damit ich in der DB ein Feld Datum, Zeit und Zeitzone habe.
Hab das mit einem Editor über Suchen und ersetzen und mit Regular Expressions versucht....finden tut ers ja aber mit dem ersetzen haperts.

Jemand nen Vorschlag?
Danke schonmal und Frohe Ostern :-)

Verfasst:
von

Hochwertiger Linkaufbau bei ABAKUS:
  • Google-konformer Linkaufbau
  • nachhaltiges Ranking
  • Linkbuilding Angebote zu fairen Preisen
  • internationale Backlinks
Wir bieten Beratung und Umsetzung.
Jetzt anfragen: 0511 / 300325-0

Verfasst: 03.04.2010, 18:10
von JR-EWING
äh ersetzen ?

zum finden nimmst du doch bestimmt Preg_match

Verfasst: 06.04.2010, 01:27
von SEO-Evangelium
...da kenn ich mich leider garnicht aus. :x

Verfasst:
von

Verfasst: 06.04.2010, 02:39
von 800XE
SEO-Evangelium hat geschrieben:...da kenn ich mich leider garnicht aus. :x
so im allgemeinen oder im speziellen so mit dem PregMatchen

ich spiel auch nicht mit dem Match :lol:
ich mach da lieber toktok oder explosion
(= früher strtok heute auch gerne explode)
cybermage hat geschrieben:- [05/Mar/2010:01:06:32 +0100]

Den würde ich gerne splitten damit ich in der DB ein Feld Datum, Zeit und Zeitzone habe.
wobei dort jetzt der Monat als Name störend wirkt

Code: Alles auswählen

$string = '[05/Mar/2010:01:06:32 +0100]';
$string = str_replace('[' , ' ', $string);
$string = str_replace(']' , ' ', $string);

$string = str_replace('/Mar/' , '/3/', $string);

$string = str_replace('/' , ' ', $string);
$string = str_replace(':' , ' ', $string);

$tok = explode(' ',$string);

$Day = $tok[1];
$Monat = $tok[2];
$Year = $tok[3];
$Hour = $tok[4];
$Minu = $tok[5];
$Secs = $tok[6];
und das könnte man dann eventuell noch in einen mktime() reinwerfen um wieder den UnixTimeStamp zu haben
https://www.php.net/manual/de/function.mktime.php

Verfasst: 06.04.2010, 02:43
von 800XE
äm, Achtung ....
der String der in den Explode reingeht, beginnt mit einem "Trennzeichen"
ich glaub das wird dann übersprungen und "$Day" würde dann schon in $tok[0] stehen und die Anderen natürlich auch weiter "links" in der [nummerierung]

Re: Logfile in Datenbank speichern

Verfasst: 06.04.2010, 09:05
von Mork vom Ork
cybermage hat geschrieben:- [05/Mar/2010:01:06:32 +0100]

Den würde ich gerne splitten damit ich in der DB ein Feld Datum, Zeit und Zeitzone habe.
Datum und Zeit gehören zusammen, wenn du das trennst, hast du einen Tag und eine Dauer, aber keinen Zeitpunkt mehr. Verwende den Typ datetime, um das zusammenzuhalten.

Die Zeitzone ist davon abgesehen im Grunde überflüssig, sie ist immer gleich, weil der gesamte Eintrag die Serverzeit darstellt.
Regular Expressions
\[(\d{2})/([A-Z][a-z]{2})/(\d{4}):(\d{2}):(\d{2}):(\d{2}) \+\d{4}\]

Verfasst: 09.04.2010, 20:26
von kostaki
Weiß nicht ob das 100% funktioniert, aber strtotime wandelt bei mir alles um was ich der Funktion gebe. Schätze mal du musst die Eckigen Klammern noch weg nehmen.