Logfiles auslesen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Logfiles auslesen

    Wer kennt sich mit Logfiles der Server aus?

    Ich möchte die logfiles meines Servers auslesen und den Traffik ausrechnen lassen. Wie mach ich das? Script-Schnippsel wäre nicht schlecht.

    Das Logfile hat folgendes Format:
    64.156.198.74 - - [01/Jan/2003:00:01:31 +0100] "GET / HTTP/1.1" 200 1259 "-" "Mozilla/5.0 (X11; Linux i686; en-US; rv:1.0rc5; OBJR)"

    Mich interessiert nur das Datum und die Bytes (fett).
    *winks*
    Gilbert
    ------------------------------------------------
    Hilfe für eine Vielzahl von Problemen!!!
    http://www.1st-rootserver.de/

  • #2
    ich nutze webalizer... is echt cool.
    eval(str_pad(aa|db,4,slarti^~äü_i_)." \"áú¾ïùû䶳Ðäýï©üèíþç£þé\"^~\"no bugs, only features\";");

    Kommentar


    • #3
      Original geschrieben von slarti
      ich nutze webalizer... is echt cool.
      Bringt mir aber nichts. Ich möchte das per PHP machen. Brauch das für ein anderes Script. Bei mir läuft ein Admin-Tool, was auch die Logfiles braucht. Ich möchte jetzt aber mir für die einzelnen Space nur den Traffik aus den Logfiles holen und diese dann in eine MySQL-DB eintragen.
      *winks*
      Gilbert
      ------------------------------------------------
      Hilfe für eine Vielzahl von Problemen!!!
      http://www.1st-rootserver.de/

      Kommentar


      • #4
        Hi,
        vielleicht kannst du mit dem etwas anfangen...
        PHP-Code:
        <?
          $logfile = file("access.log");

          for($j=0;$j<count($logfile);$j++)
          {
           $datum_startpunkt = strpos($logfile[$j],"[")+1;
           $datum_endpunkt = strpos($logfile[$j],"]");
           $datum_laenge = $datum_endpunkt - $datum_startpunkt;
           $datum = substr($logfile[$j],$datum_startpunkt,$datum_laenge);

           $rest = substr($logfile[$j],$datum_endpunkt);

           $rest = strchr($rest,"\"");
           $rest = substr($rest,1);
           $rest = strchr($rest,"\"");
           $rest = substr($rest,1);
           $rest = substr($rest,5);

           for($i=0;$i<strlen($rest);$i++)
           {
            $filter = substr($rest,$i,1);

            if($filter == " ")
            {
               break;
            }
            else
            {
             @$byte .= $filter;
            }
           }
           echo "Datum: ".$datum."<br>";
           echo "Byte: ".$byte."<br>";
           unset($datum);
           unset($byte);
          }
        ?>
        Zuletzt geändert von Günni; 10.02.2003, 10:12.
        mfg
        Günni


        Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
        Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
        Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
        City-Tiger - Online durch die Straßen tigern...

        Kommentar


        • #5
          Sieht gut aus. Zumindestens bekomme ich jetzt die Daten die ich haben möchte.

          So, wie war das noch mal mit dem Datum zerlegen?
          Jetzt ist ja das Datum in dem Format:
          01/FEB/2003:10:20:30 +0100

          Ich würde gerne das Datum und die Uhrzeit so umsetzen um es in einer Datenbank zuspeichern (2003-02-01 10:20:30).
          *winks*
          Gilbert
          ------------------------------------------------
          Hilfe für eine Vielzahl von Problemen!!!
          http://www.1st-rootserver.de/

          Kommentar


          • #6
            PHP-Code:
            <?
              $Monat = array("JAN" => "01","FEB" => "02","MAR" => "03","APR" => "04","MAY" => "05","JUN" => "06","JUL" => "07","AUG" => "08","SEP" => "09","OKT" => "10","NOV" => "11","DEC" => "12");
              $Date = "01/FEB/2003:10:20:30 +0100";
              
              //(2003-02-01 10:20:30)
              
              $uhrzeit = substr($Date,strpos($Date,":")+1,(strpos($Date," ")-strpos($Date,":")));
              $datum = substr($Date,0,strpos($Date,":"));

              list($tag,$monat,$jahr) = explode("/",$datum);
              $datum = $jahr."-".$Monat[$monat]."-".$tag;

              $komplett = $datum." ".$uhrzeit;
              echo $komplett;
            ?>
            mfg
            Günni


            Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
            Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
            Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
            City-Tiger - Online durch die Straßen tigern...

            Kommentar


            • #7
              günni, wieso mault er mich jetzt an wenn ich das hier noch einsetze:
              PHP-Code:
              $ip_startpunkt strpos($logfile[$j],"");//Zeile 5
              $ip_endpunkt strpos($logfile[$j]," -");
              $ip_laenge $ip_endpunkt $ip_startpunkt;
              $ip substr($logfile[$j],$ip_startpunkt,$ip_laenge); 
              Es kommt folgende Fehlermeldung:
              Warning: Empty Delimiter in traffik.php on line 5
              *winks*
              Gilbert
              ------------------------------------------------
              Hilfe für eine Vielzahl von Problemen!!!
              http://www.1st-rootserver.de/

              Kommentar


              • #8
                Du hast bei dem Zeichen, nach dem er suchen soll nix angegeben...
                PHP-Code:
                $ip_startpunkt strpos($logfile[$j],"Dieses Feld darf nicht leer sein (muss zumindest ein leerschritt enthalten)");//Zeile 5 
                mfg
                Günni


                Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
                Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
                Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
                City-Tiger - Online durch die Straßen tigern...

                Kommentar


                • #9
                  Könntest du mir mal nen gefallen tun und schauen ob das folgende Script die richtigen Daten bei dir ausgibt??? Wäre klasse.

                  PHP-Code:
                  <?
                    // Datei Angeben
                    $logfile = file("access.log");

                    for($i=0;$i<count($logfile);$i++)
                    {
                    // Schleife um Array abzuarbeiten (kommt nocht)
                    
                       $ip_nummer = substr($logfile[$i],0,strpos($logfile[$i]," "));
                       $datum = substr($logfile[$i],(strpos($logfile[$i],"["))+1,(strpos($logfile[$i],"]")-strpos($logfile[$i],"[")-1));

                       // Gibt die Request Methode und die Betroffene Datei an
                       $methode = substr($logfile[$i],(strpos($logfile[$i],"\"")+1));
                       $methode = substr($methode,0,strpos($methode,"\""));

                       // Gibt die Nummer der Serverantwort zurück
                       $serverantwortnummer_string = substr($logfile[$i],strpos($logfile[$i],"\"")+1);
                       $serverantwortnummer_string = substr($serverantwortnummer_string,strpos($serverantwortnummer_string,"\"")+1);
                       $serverantwortnummer = substr($serverantwortnummer_string,1,3);

                       // Noch nicht ganz zerlegter String in einer anderen Variable speichern
                       $byte_anzahl_string = trim($serverantwortnummer_string);
                       
                       // Gibt die gesendete Byte Anzahl zurück
                       $browser = $byte_anzahl_string;
                       $byte_letztes_zeichen = strpos($byte_anzahl_string,"\"");
                       if($byte_letztes_zeichen == "" || $byte_letztes_zeichen == 0)
                       {
                         $byte_letztes_zeichen = strlen($byte_anzahl_string);
                       }
                       $byte_anzahl = substr($byte_anzahl_string,3,$byte_letztes_zeichen-3);

                       $browser_string = $byte_anzahl_string;
                       $browser_string = substr($browser_string,strpos($browser_string,"\"")+5);
                       $browser = substr($browser_string,0,strpos($browser_string,"\""));

                       echo "IP Nummer: $ip_nummer"."<br>";
                       echo "Datum: $datum"."<br>";
                       echo "Methode mit aufgerufener Seite: $methode"."<br>";
                       echo "Antwort vom Server (Nummer): $serverantwortnummer"."<br>";
                       echo "Gesendete Bytes: $byte_anzahl"."<br>";
                       echo "Browser: $browser"."<br>";
                       echo "<br><br>";
                    }
                  ?>
                  mfg
                  Günni


                  Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
                  Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
                  Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
                  City-Tiger - Online durch die Straßen tigern...

                  Kommentar


                  • #10
                    Geht einwandfrei.
                    komm mal per Mail, dann gebe ich die die URL.
                    *winks*
                    Gilbert
                    ------------------------------------------------
                    Hilfe für eine Vielzahl von Problemen!!!
                    http://www.1st-rootserver.de/

                    Kommentar


                    • #11
                      Du warst mal wieder schneller. Wollte gerade dein Script in den Code-Schnippsel schreiben.
                      *winks*
                      Gilbert
                      ------------------------------------------------
                      Hilfe für eine Vielzahl von Problemen!!!
                      http://www.1st-rootserver.de/

                      Kommentar


                      • #12
                        Bin halt ein flinkes Kerlchen
                        mfg
                        Günni


                        Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
                        Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
                        Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
                        City-Tiger - Online durch die Straßen tigern...

                        Kommentar


                        • #13
                          Wie war den das?
                          Bytes/1024=MB
                          MB/1024=GB
                          GB/1024=TB
                          *winks*
                          Gilbert
                          ------------------------------------------------
                          Hilfe für eine Vielzahl von Problemen!!!
                          http://www.1st-rootserver.de/

                          Kommentar


                          • #14
                            1 Zeichen = 1 Byte = 8 Bit
                            1024 Zeichen = 1024 Byte = 1 Kilobyte = 1KByte = 1 KB
                            1.048.576 Zeichen = 1024 Kilobyte = 1 Megabyte = 1 MB
                            1.073.741.824 Zeichen = 1024 Megabyte = 1 Gigabyte = 1 GB
                            1 Terabyte = 1 Million Megabyte = 1 Billion Byte
                            (=1.000.000.000.000 Byte)
                            mfg
                            Günni


                            Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
                            Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
                            Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
                            City-Tiger - Online durch die Straßen tigern...

                            Kommentar

                            Lädt...
                            X