T-Online Logfile splitten
Netz-rapid
- webhosting
0 Encoder0 Tom0 Netz-rapid0 Tom0 Netz-rapid0 Tom0 Netz-rapid0 Tom
Hallo,
ich habe bei T-Online das Homepage Paket Starter und mehrere Domains. Jetzt möchte ich das Logfile für den gesamten Webspace nach den Domains splitten. Wie lässt sich das machen (auch Fehlanfragen, etc)?
Vielen Dank für Eure Hilfe!
Wie lässt sich das machen (auch Fehlanfragen, etc)?
Mit einer Programmiersprache deiner Wahl :-) Welche darf es sein? Oder soll es fertig sein? Wie sieht die Datei aus?
Du hast ein bisschen wenig Infos...
Hello,
Wie lässt sich das machen (auch Fehlanfragen, etc)?
Mit einer Programmiersprache deiner Wahl :-) Welche darf es sein? Oder soll es fertig sein? Wie sieht die Datei aus?
Du hast ein bisschen wenig Infos...
Vielleicht meint der OP eher, wie aus einem LOG gleich je ein Access-Log und ein Error-Log pro Domain macht. Aber auch für die Beantwortung dieser Frage hat er zuwenig Input geliefert.
Weleches OS?
Welcher Webserver?
Welche Zugriffsrechte und -arten sind vorhanden?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Gemeint ist eine Serverlogdatei (Apache access.log Datei). Und mit Fehlanfragen meine ich, dass in die getrennten Logdateien auch 404-Anfragen jeweils getrennt einfließen. Es wird nur eine Logdatei vom Server erstellt (Apache-Logdatei wie hier).
Hoffentlich hilft das!
Hello,
Gemeint ist eine Serverlogdatei (Apache access.log Datei). Und mit Fehlanfragen meine ich, dass in die getrennten Logdateien auch 404-Anfragen jeweils getrennt einfließen. Es wird nur eine Logdatei vom Server erstellt (Apache-Logdatei wie hier).
Hoffentlich hilft das!
1. Es wird nur eine Log-Datei erstellt pro was? Für den ganzen Host (Web Server)?
Oder pro Domain (Virtual Host)?
2. Willst Du nun je ein Error-Log und ein Access-Log?
3. Hast Du Einfluss auf die Konfiguration des Webservers?
4. Bitte beantworte ALLE Fragen, sonst kann dir nicht sinnvoll geholfen werden.
5. Oder willst Du die einzige Logdatei wirklich nachträglich per Script zerlegen lassen?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
- Es wird nur eine Log-Datei erstellt pro was? Für den ganzen Host (Web Server)?
Oder pro Domain (Virtual Host)?
Es wird wie gesagt eine Apache-Logdatei für den gesamten Webspace erstellt (Für den ganzen Host (Web Server)
- Willst Du nun je ein Error-Log und ein Access-Log?
Nein, ich will eine Access-Logdatei. Es soll keine extra Error-Log geben. Allerdings sollen Fehler in der Access-Log drin sein. BSP: Der User ruft die Seite t1.html auf. Diese gibt es nicht in der gesplitteten Logdatei soll dann (wie in der Ausgangslogdatei) stehen: 123.12.122.156 [TimeStamp] "GET /images/logo.jpg HTTP/1.1" <b>404</b>
512 "http://www.wikipedia.org/" "Mozilla/5.0 (X11; U; Linux i686; de-DE;rv:1.7.5)"
- Hast Du Einfluss auf die Konfiguration des Webservers?
Nein. Nur bei einem Upgrade (was ich in Kauf nehmen würde) hätte ich PHP/Perl und MySQL.
- Bitte beantworte ALLE Fragen, sonst kann dir nicht sinnvoll geholfen werden.
OK
- Oder willst Du die einzige Logdatei wirklich nachträglich per Script zerlegen lassen?
Das wäre mir am liebsten. (Im nach hinein zerlegen lassen)
Danke für deine Bemühungen!
Netz-rapid
Hello,
- Hast Du Einfluss auf die Konfiguration des Webservers?
Nein. Nur bei einem Upgrade (was ich in Kauf nehmen würde) hätte ich PHP/Perl und MySQL.
Das sieht natürlich schlecht aus dann mit der Änderung der Logstrategie.
Wenn es jetzt keine separates Error_log gibt und in der Sammel-Logdatei keine Fehlermeldungen drinstehen, wirst du vermutlich auch keine bekommen können.
http://httpd.apache.org/docs/2.2/mod/core.html#errorlog
Man kann das Error-Logging zwar in eine Datei zusammen mit dem Access-Logging lenken, aber an diese Einstellung kommt Du dann ja nicht heran.
Um zumindest das Access-Log auseinanderfummeln zu können, müsstest Du bitte mal ein paar Zeilen davon rausrücken, damit man das Format erkennt.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
1. Ich habe doch Fehlerercodes !!! In der Log-Datei steht bei nicht gefunden dann als Statuscode 404 oder ein anderer!!!!!!!! (Siehe unten)
Ein paar Zeilen:
74.125.112.136 - - [01/Jun/2009:00:23:59 +0200] "GET /news/rss/feed.rss HTTP/1.0" 200 1404 "-" "FeedBurner/1.0 (http://www.FeedBurner.com)"
217.72.199.111 - - [01/Jun/2009:00:45:10 +0200] "GET /news/rss/feed2.rss HTTP/1.1" 404 404 "-" "-"
213.46.87.227 - - [01/Jun/2009:13:42:26 +0200] "GET /news.html HTTP/1.1" 200 6889 "-" "Java/1.6.0"
213.46.87.227 - - [01/Jun/2009:13:42:27 +0200] "GET /news/38EL-Dateien/filelist.xml HTTP/1.1" 402 - "-" "Java/1.6.0"
213.46.87.227 - - [01/Jun/2009:13:42:27 +0200] "GET /news/rss/ie.html HTTP/1.1" 200 5545 "-" "Java/1.6.0"
Hello,
das Splitten geht recht simpel ohne jegliche Regular Expressions.
<?php ### split_log.php ###
$fp = fopen('access_log.txt','rb');
#$fp = fopen('C:/programme/xampp/apache/logs/access.log','rb');
$search = array('[', ']', '"');
$replace = array('', '', '' );
$_list = array();
while ($line = fgets($fp, 4000))
{
$line = str_replace($search, $replace, $line);
$_rec = explode(' ', $line, 12);
## ^^ ### Mit dem Explode-Limit kannst Du noch herumspielen
$_list[] = $_rec;
}
echo "<pre>\r\n";
echo htmlspecialchars(print_r($_list,1));
echo "<pre>\r\n";
fclose($fp);
?>
Ich habe es verschiedenen Logdateien von mir ausprobiert und erstaunlicherweise hat es bei allen (@Martin: auch nicht geänderten) Formaten gepasst.
Wenn die Logdatei zu groß wird, kann man die Sätze natürlich nicht mehr in einem Superarray sammeln. Dann macht PHP dicke Backen...
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Und wie wird jetzt mein Logfile nach den Domains gesplittet???
Woher weiß ich, zu welcher DOmain welcher "/" gehört?
Netz-rapid
Hello,
Und wie wird jetzt mein Logfile nach den Domains gesplittet???
Woher weiß ich, zu welcher DOmain welcher "/" gehört?
Tja, das geht leider nicht, es sei denn, die Ressourcen heißen absolut unterschiedlich.
Wie verwaltest Du die Domains denn?
Haben die alle je eine eigene Document Root?
Handelt es ich um Virtual Hosts?
Du hast bisher immer noch nicht alles erzählt.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
ALso, Domain A greift auf Root zu. Im Homepagecenter der Telekom habe ich eingestellt, dass Domain B beim Aufruf auf den Unterordner "DomainB" weitergeleitet wird. Soweit ich Logfiles verstanden habe, wird beim Aufruf des Ordners "DomainB" (index.html) dies als "/" gewertet.
Netz-rapid
PS:Wäre es nicht möglich, ein Verzeichnis ganz mit PHP oder Perl zu überwachen, die IP und den TimeStamp zu erfassen und dann später aus dem Logfile die Zeilen, in denen die IP und der Timestamp übereinstimmen herauszufiltern?
Hallo,
ALso, Domain A greift auf Root zu.
das ist ungünstig: Es bedeutet doch, dass du über Domain A auch auf die Inhalte von Domain B zugreifen kannst, weil die ja physikalisch in einem Unterverzeichnis von Domain A liegen.
Im Homepagecenter der Telekom habe ich eingestellt, dass Domain B beim Aufruf auf den Unterordner "DomainB" weitergeleitet wird.
Das ist auch ungünstig. Warum "weitergeleitet"? Das heißt, dass der Browser bei jedem Zugriff einen Umweg machen muss. Besser wäre, wenn man die Domains direkt den gewünschten Verzeichnissen zuordnen könnte. Ich kenne aber die Möglichkeiten nicht, die T-Online da bietet.
Soweit ich Logfiles verstanden habe, wird beim Aufruf des Ordners "DomainB" (index.html) dies als "/" gewertet.
Ähm, dann ist das aber keine Weiterleitung, sondern genau das, was ich im vorigen Absatz als wünschenswert dargestellt habe.
Achte auf die Begriffe: Weiterleitung heißt, der Browser fragt eine Ressource an, bekommt vom Server die Antwort "Hier nicht, sieh mal unter <andere URL> nach", und setzt daraufhin einen zweiten Request ab.
PS:Wäre es nicht möglich, ein Verzeichnis ganz mit PHP oder Perl zu überwachen, die IP und den TimeStamp zu erfassen
Nein. Wie stellst du dir das vor?
Möglich wäre höchstens, alle Zugriffe auf ein Verzeichnis auf *ein* Script umzuleiten, das den Zugriff in einem eigenen Log protokolliert, die eigentliche Request-URL analysiert und dann die normalen Abläufe des Webservers (z.B. Ermitteln des Content-Type) nachbildet. Das wäre relativ aufwendig, und die getrennten Protokolle müssten mir schon *sehr* wichtig sein, wenn ich diesen Aufwand treiben sollte.
So long,
Martin
Aber was soll ich jetzt machen???
Netz-rapid
Hallo,
Und wie wird jetzt mein Logfile nach den Domains gesplittet???
Woher weiß ich, zu welcher DOmain welcher "/" gehört?
das Problem habe ich bei meinem Hoster auch: Ich kann mehrere Domains verwalten und jeder Domain ein eigenes Verzeichnis als Document Root zuweisen, wie sich das gehört. Aber der Hoster erstellt für das gesamte Hosting-Paket nur *eine* Logdatei, in der die Zugriffe auf alle Domains gemischt protokolliert werden. Ich kann also bei gleichnamigen Ressourcen nicht mehr unterscheiden, auf welche Domain dieser Zugriff erfolgte.
Eine Anfrage an den Support brachte leider sinngemäß nur die Antwort: Das ist halt so, das können [besser: wollen] wir auch nicht ändern. Da müssten Sie wohl eigene Logging-Mechanismen einrichten." Nun ja, die Zugriffe auf PHP-Ressourcen kann ich natürlich selbst loggen; die Zugriffe auf Bilder, Stylesheets und andere statische Ressourcen nicht.
Und nein, der Hoster ist nicht T-Online. ;-)
So long,
Martin
Hello,
man könnte vielleicht bei jedem Request per Rewrite bei jeder Domain einen anderen Parameter anhängen lassen, der die Domains dann unterscheidbar macht. Oder war das jetzt 'ne doofe Idee?
Soweit ich das eben auf die Schnelle überprüft habe, geht das.
Anhand der Schlüsselwörter kann man die Logeinträge dann unterscheiden. Ist jetzt nur die Frage, ob die irgendwo außen sichtbar werden. Das wäre ja nicht so praktisch.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hello,
Hello,
man könnte vielleicht bei jedem Request per Rewrite bei jeder Domain einen anderen Parameter anhängen lassen, der die Domains dann unterscheidbar macht. Oder war das jetzt 'ne doofe Idee?
es gibt dazu zwar schon einen Thread im Archiv
http://forum.de.selfhtml.org/archiv/2006/6/t131652/
Aber bisher nützt es nichts.
Im Log kommt der modifizierte Query-String nicht an bisher, nur im Script.
Das ist dumm.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Wäre es nicht möglich, ein Verzeichnis ganz mit PHP oder Perl zu überwachen, die IP und den TimeStamp zu erfassen und dann später aus dem Logfile die Zeilen, in denen die IP und der Timestamp übereinstimmen herauszufiltern?
Viele Grüße
Netz-rapid