Netz-rapid: T-Online Logfile splitten

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!

  1. 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...

    1. 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

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
      1. 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. 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

          --
          Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
            1. 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)

            1. 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)"

            1. 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.

            1. Bitte beantworte ALLE Fragen, sonst kann dir nicht sinnvoll geholfen werden.

            OK

            1. 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

            1. Hello,

              1. 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

              --
              Nur selber lernen macht schlau
              http://bergpost.annerschbarrich.de
              1. 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"

                1. 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

                  --
                  Nur selber lernen macht schlau
                  http://bergpost.annerschbarrich.de
                  1. Und wie wird jetzt mein Logfile nach den Domains gesplittet???
                    Woher weiß ich, zu welcher DOmain welcher "/" gehört?

                    Netz-rapid

                    1. 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

                      --
                      Nur selber lernen macht schlau
                      http://bergpost.annerschbarrich.de
                      1. 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?

                        1. 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

                          --
                          Denken ist wohl die schwerste Arbeit, die es gibt. Deshalb beschäftigen sich auch nur wenige damit.
                            (Henry Ford, amerikanischer Industriepionier)
                          1. Aber was soll ich jetzt machen???

                            Netz-rapid

                    2. 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

                      --
                      Bitte komme jemand mit einem *g* zum Wochenende, damit nicht über mich gelacht wird.
                        (Gunnar Bittersmann)
                      1. 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

                        --
                        Nur selber lernen macht schlau
                        http://bergpost.annerschbarrich.de
                        1. 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

                          --
                          Nur selber lernen macht schlau
                          http://bergpost.annerschbarrich.de
                          1. 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