logfiles.gz
bernd
- perl
0 Sven Rautenberg0 bernd0 Erwin0 bernd
0 Sven Rautenberg0 bernd
0 TorstenA0 Erwin
hallo erstmal,
mein provider stellt die logfiles in besagtem format zur verfügung. ich würde sie nun am liebsten online mit perl parsen- weiß zufällig jemand, ob es da einen weg gibt, derartige formate zu öffnen?
(einfaches "open..." bringt natürlich hieroglyphen ;-)
greetings
bernd
Moin!
hallo erstmal,
mein provider stellt die logfiles in besagtem format zur verfügung. ich würde sie nun am liebsten online mit perl parsen- weiß zufällig jemand, ob es da einen weg gibt, derartige formate zu öffnen?
GZip ist dein Freund. Oder eine passende Perl-Klasse (darüber bin ich aber nicht informiert).
gzip liefert dir den Datenstrom auf Wunsch auch auf der Standardausgabe (oder -eingabe, je nachdem, aus welcher Sicht man das sieht).
PS: PHP hat für gzip-Dateien einen eigenen Handler, der das ent- und verzippen automatisch erledigt. Dafür muß man nur die zlib-Bibliothek eingebunden haben.
- Sven Rautenberg
moinmoin,
habe es mal besonders quick & dirty probiert:
my $dekomp=system ("gunzip access_log_2003-12-02.gz");
print "Content-Type: text/html\n\n";
print "$dekomp";
egal, welches logfile ich nun nehme- das resultat ist immer: 256
*LOL*
hättest du zufällig einen tipp, wie ich eine vernünftige ausgabe zustande bekomme?
greetings
bernd
moinmoin,
habe es mal besonders quick & dirty probiert:
my $dekomp=system ("gunzip access_log_2003-12-02.gz");
print "Content-Type: text/html\n\n";
print "$dekomp";
Selbst wenn _das_ gehen sollte: bevor du beginnst, guck mal nach der Größe des logfiles und überleg dir dann ob es sinn macht so ein teil komplett im browser auszugeben...
btw., es heißt
print "Content-type....
kleines T, so mancher apache quittiert ein großes T bei type mit einem 500 status.
viele Grüße, Erwin
moin erwin,
Selbst wenn _das_ gehen sollte: bevor du beginnst, guck mal nach der Größe des logfiles und überleg dir dann ob es sinn macht so ein teil komplett im browser auszugeben...
keine bange- das tat ich vorher (ist ein kleines und dies dient nur dazu, überhaupt erstmal irgendeine dekomprimierung hinzukriegen ;-)
btw., es heißt
print "Content-type....kleines T, so mancher apache quittiert ein großes T bei type mit einem 500 status.
echt jetzt? noch nie probs damit gehabt, aber besten dank für den tipp- da hab ich wieder was gelernt.
greets
bernd
Moin!
my $dekomp=system ("gunzip access_log_2003-12-02.gz");
print "Content-Type: text/html\n\n";
print "$dekomp";egal, welches logfile ich nun nehme- das resultat ist immer: 256
*LOL*
Du weißt, was du da machst? Der Rückgabewert des system()-Aufrufs ist offenbar 256. Und wenn ich mir das Manual zu Perl angucke, ist das ganz vernünftig:
http://www.perldoc.com/perl5.8.0/pod/func/system.html
Zitat:
"The return value is the exit status of the program as returned by the wait call. To get the actual exit value shift right by eight (see below). See also /exec. This is not what you want to use to capture the output from a command, for that you should use merely backticks or qx//, as described in perlop/"STRING
". Return value of -1 indicates a failure to start the program (inspect $! for the reason)."
Ich hatte eher an ein passendes fopen() gedacht, welches die Ausgabe von "gunzip -c filename" einliest.
hättest du zufällig einen tipp, wie ich eine vernünftige ausgabe zustande bekomme?
Du hast noch zwei wunderbare andere Antworten erhalten! Was ist mit denen?
- Sven Rautenberg
moinmoin,
Du weißt, was du da machst?
nicht zu 100% :-}
(laut stefans beschreibung, lässt sich via "system..." halt ein unix-befehl ausführen- das war erstmal der schnellste versuch).
to use to capture the output from a command, for that you should use merely backticks or qx//,
»»
dies hier scheint mir nochmal einen versuch wert zu sein.
Ich hatte eher an ein passendes fopen() gedacht, welches die Ausgabe von "gunzip -c filename" einliest.
habe ich in dieser weise probiert:
open (TST, "|gunzip access_log_2003-12-02.gz")
resultat: undef (also nix).
Du hast noch zwei wunderbare andere Antworten erhalten! Was ist mit denen?
ja, die haben mir auch sehr gut gefallen, aber für den tie stellt mir der provider nicht die nötigen module zur verfügung und apache-parse-log war mir erstmal zu komplex (damit werde ich mich jetzt mal beschäftigen).
thx anyway
bernd
Moin!
to use to capture the output from a command, for that you should use merely backticks or qx//,
»»
dies hier scheint mir nochmal einen versuch wert zu sein.
Nimm eines der Perl-Module.
Ich hatte eher an ein passendes fopen() gedacht, welches die Ausgabe von "gunzip -c filename" einliest.
habe ich in dieser weise probiert:
open (TST, "|gunzip access_log_2003-12-02.gz")
resultat: undef (also nix).
Zwei Fehler.
Erstens: Der Parameter "-c" fehlt, den habe ich nicht zum Spaß da reingeschrieben.
Zweitens: Das Pipezeichen ist an der falschen Stelle. Es gehört, wenn überhaupt, nach hinten.
Du hast noch zwei wunderbare andere Antworten erhalten! Was ist mit denen?
ja, die haben mir auch sehr gut gefallen, aber für den tie stellt mir der provider nicht die nötigen module zur verfügung und apache-parse-log war mir erstmal zu komplex (damit werde ich mich jetzt mal beschäftigen).
- Sven Rautenberg
Hallo bernd,
(laut stefans beschreibung, lässt sich via "system..." halt ein unix-befehl ausführen- das war erstmal der schnellste versuch).
Klar lässt der sich ausführen, aber damit steht dir der Inhalt der entpackten Logdatei noch nicht in deinem Perlscript zur Verfügung. Vorausgesetzt, es funktioniert, wie du es dir "quick and dirty" gedacht hast, dann muss es im Erfolgsfall irgendwo auf deinem Webspace eine entpackte Logdatei geben. Diese kannst du nun öffnen und innerhalb deines Perlscriptes weiterbearbeiten. Im Zweifel sollte ein Blick in die Dokumentation von gzip/gunzip:
http://www.uni-marburg.de/hrz/sp/anw/tools/gzip/gzip.man.html
Auch hierhin solltest du einen Blick hinwerfen:
http://www.perldoc.com/perl5.8.0/pod/perlsec.html#DESCRIPTION
Vielleicht hilft's
Torsten
Hallo bernd,
mein provider stellt die logfiles in besagtem format zur verfügung. ich würde sie nun am liebsten online mit perl parsen- weiß zufällig jemand, ob es da einen weg gibt, derartige formate zu öffnen?
Auf die Schnelle gefunden:
http://search.cpan.org/~softdia/Tie-Gzip-0.01/lib/Tie/Gzip.pm
http://search.cpan.org/~akira/Apache-ParseLog-1.02/ParseLog.pm bzw.
http://search.cpan.org/~mslagle/Parse-AccessLogEntry-0.05/AccessLogEntry.pm
Vielleicht hilft's
Torsten
hallo ,
mein provider stellt die logfiles in besagtem format zur verfügung. ich würde sie nun am liebsten online mit perl parsen- weiß zufällig jemand, ob es da einen weg gibt, derartige formate zu öffnen?
(einfaches "open..." bringt natürlich hieroglyphen ;-)
also, ich würde
Tie::Gzip - read and write gzip compressed files
http://theoryx5.uwinnipeg.ca/CPAN/data/Tie-Gzip/Tie/Gzip.html
dazu verwenden.
Gruss, Erwin