Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 21

Thema: logdateien mit php auswerten

  1. #1
    Registrierter Benutzer
    Registriert seit
    05.10.2004
    Beiträge
    9

    logdateien mit php auswerten

    hallo!

    ich moechte mir eine serveradminseite bauen
    da sollen diverse logdateien per knopfdruck angezeigt werden (access.log, messages.log u.s.w)

    eventuell soll noch die squid log nach ip durchsucht werden.

    ich hab schon gegoogelt aber elider nichts gefunden.
    bin ich den der erste der sowas machen moechte ?

    hat jemand eventuell einen weiterfuehrenden link?

    danke

  2. #2
    Registrierter Benutzer
    Registriert seit
    22.08.2002
    Ort
    Nürnberg
    Beiträge
    638
    Zitat Zitat von laolamia
    ich moechte mir eine serveradminseite bauen
    da sollen diverse logdateien per knopfdruck angezeigt werden (access.log, messages.log u.s.w)

    eventuell soll noch die squid log nach ip durchsucht werden.
    Entweder Du möchtest etwas machen und hast konkrete Fragen bei denen wir Dir helfen können.

    Zitat Zitat von laolamia
    ich hab schon gegoogelt aber elider nichts gefunden.
    bin ich den der erste der sowas machen moechte ?
    Oder Du willst etwas fertiges, wie z.B. Webmin

    Installation z.B. mit apt-get install webmin

    Pingu

  3. #3
    Registrierter Benutzer
    Registriert seit
    05.10.2004
    Beiträge
    9
    hi!

    ich moechte sowas machen und suche anregungen
    webmin hab ich schon.

    haett ja sein koennen das es sowas gibt und dann wird ich es halt fuer meine bedürfnisse anpassen

  4. #4
    Registrierter Benutzer
    Registriert seit
    05.05.2004
    Beiträge
    212
    ich geb mal noch nen denkanstoß. mit file() kannst du dateien einlesen und mit system() kannst du auf system programme zugreifen

    cu SHB

  5. #5
    Registrierter Benutzer
    Registriert seit
    22.08.2002
    Ort
    Nürnberg
    Beiträge
    638
    Zitat Zitat von shb
    ich geb mal noch nen denkanstoß. mit file() kannst du dateien einlesen und mit system() kannst du auf system programme zugreifen
    Infos dazu gibt es hier


    Weitere interessante Funktionen dazu könnten sein:


    Pingu

  6. #6
    Registrierter Benutzer
    Registriert seit
    05.10.2004
    Beiträge
    9
    danke, sowas hab ich gesucht
    dann kann ich meine logdatein anzeigen und eigene scripte ausfuehren.

  7. #7
    Registrierter Benutzer
    Registriert seit
    05.10.2004
    Beiträge
    9
    hallo!

    das anzeigen meiner logdateien funktioniert schon ganz gut.

    nun moechte ich aber die datei erst durchsuchen und dann nur das ergebnis ausgeben.

    zb. ueber ein suchfeld eine ip eingeben und dann die ausgabe auf diese ip beschraenken (access_log)

    Code:
    <?php 
    $Datei = file("access_log"); 				
    for ($i=count($Datei);$i>=0;$i--) { 	
    $Zeile = explode('<br>',$Datei[$i]); 	
        echo "$Zeile[0]<hr> "; 				
    } 
    ?>
    also ich muss ja die eingabe in eine Variable schreiben ($eingabe)
    dann muss die datei nach dieser zeile durchsucht werden und per echo ausgegeben werden.

    danke

  8. #8
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Dann must du matchen siehe eregi()/preg_match_all() oder preg_match()
    mfg undefined
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  9. #9
    Registrierter Benutzer
    Registriert seit
    05.10.2004
    Beiträge
    9
    hmmmm, erstmal ne generelle frage:

    woher weissich das ich nach pre_match und ereg suche muss?
    ich hab das kapitel "umgang mit datensaetzen" durchstoebert

    aber nach deinem hinweis hab ich mal nachgelesen und etwas probiert, leider ohne erfolg.

    Code:
    #<?php
    #
    #$suche = "(10.128.9.30)";
    #$datei = "access_log";
    #echo eregi ($suche, $datei, $ergebnis);
    #echo $ergebnis[0], "<br>";
    #echo $ergebnis[1], "<br>";
    #
    #?>
    da in der datei diese ip vorkommt haette ich doch ne anzeige bekommen muessen?!
    ich glaub das ist mir zu hoch

  10. #10
    Registrierter Benutzer
    Registriert seit
    22.08.2002
    Ort
    Nürnberg
    Beiträge
    638
    Zitat Zitat von laolamia
    hmmmm, erstmal ne generelle frage:

    woher weissich das ich nach pre_match und ereg suche muss?
    ich hab das kapitel "umgang mit datensaetzen" durchstoebert
    Generell: Indem man sich die Zeit nimmt und die Funktionsreferenz durchliest (man muß ja nicht jede einzelen Funktion ansehen, deswegen gibt es ja die Gruppierung), um einen Überblick und ein Gefühl dafür bekommt wo was zu finden ist.

    Speziell: Daß es bei Dir Datensätze sind, hat nichts mit der Suche zu tun. Aber der generelle Fall ist: Ich möchte Suchen. Denn es könnte ja auch ein Suchen in einem Fließtext sein. Und was ist Datensatz? Ein Text. Ansonsten, wenn man in einer Datenbank sucht, dann stellt die Datenbank die Hilfsmittel zur Verfügung und nicht die Programmiersprache, in diesem Fall php.

    Zitat Zitat von laolamia
    aber nach deinem hinweis hab ich mal nachgelesen und etwas probiert, leider ohne erfolg.

    Code:
    #<?php
    #
    #$suche = "(10.128.9.30)";
    #$datei = "access_log";
    #echo eregi ($suche, $datei, $ergebnis);
    #echo $ergebnis[0], "<br>";
    #echo $ergebnis[1], "<br>";
    #
    #?>
    da in der datei diese ip vorkommt haette ich doch ne anzeige bekommen muessen?!
    ich glaub das ist mir zu hoch
    Da stellt sich bei mir die Frage: Die IP kommt zwar vor, aber kommt sie auch genau so vor? Denn Du suchst ja nach (10.128.9.30). Soweit ich weiß, sind die IPs in der access.log aber nicht in Klammern geschrieben. Also müßtest Du nach 10.128.9.30 suchen. Richtig wäre es dann somit:
    PHP-Code:
    <?php

    $suche 
    "10.128.9.302";
    [
    snip]
    ?>
    Dann das zweite: Was ist das?
    PHP-Code:
    $datei "access_log";
    echo 
    eregi ($suche$datei$ergebnis); 
    Du suchst also nach (10.128.9.30) in der Zeichenkette access_log. Daß er da nichts findet ist ja wohl klar. Ich dachte auch, daß Du in der Datei Suchen möchtest. Also mußt Du ersteinmal die Datei einlesen.

    Sorry, aber einen Programmier-Workshop werde ich jetzt hier nicht veranstalten. Die Grundlagen muß schon jeder für selbst ersteinmal erarbeiten, sei es über ein Buch, einen VHS-Kurs, einen Schulkurs oder Selbststudium, indem man das Manual liest und versucht die dort angegeben Beispiele zu verstehen.

    Pingu
    Geändert von Pingu (08-10-2004 um 11:44 Uhr)

  11. #11
    Registrierter Benutzer
    Registriert seit
    05.10.2004
    Beiträge
    9
    danke, ich habs mit und ohne klammer versucht.
    der fehler ist wohl das fehlende einlesen der datei

  12. #12
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Dein erster Code war doch in Ordnung. Es fehlte halt nur der match Befehl.
    PHP-Code:
    <?php
    if ( file_exists"access_log" ) )
    {
        
    $Datei file("access_log"); 
        
    $buffer = array();
        foreach ( 
    $Datei AS $z => $v )
        {
            if ( 
    preg_match"/([\d]+[\.]*)/"$v ) )
                
    $buffer[] = "Zeile $z ist $v";
        }
        
        
    print_r$buffer );
    }

    ?>
    im file
    Code:
    #
    #
    #
    #
    #
    156.168.20.1
    192.15.20.12
    192.168.1.33
    #
    #
    #
    #
    #
    #
    mfg undefined
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  13. #13
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    Zitat Zitat von laolamia
    also ich muss ja die eingabe in eine Variable schreiben ($eingabe)
    dann muss die datei nach dieser zeile durchsucht werden und per echo ausgegeben werden.
    Wie fett sind denn deine Logfiles?
    Hintergrund: ich habe ebenfalls lange mit php herumgetrickst, um mir verschiedene Statistiken ausgeben zu lassen. Als meine Seite noch relativ unbekannt war, lief die Verarbeitung mit php recht gut.

    Dann kam die Zeit, wo das Progrämmchen in den zugestandenen 30s nicht mehr mit der Aufgabe fertig wurde. - Also beim Webmaster um mehr Rechenzeit gebettelt.
    (Ich arbeitete mit strpos, nicht mit preg_match, Grund siehe hier:
    http://de3.php.net/manual/de/function.preg-match.php
    )

    Dann kam die Zeit, wo das php-Progrämmchen so 2 Stunden am Rödeln und der Webmaster ziemlich sauer war. (ca. 6000 - 7000 Fundstellen aus ummi 300 - 500 MB auswerten)

    Nach 6 Wochen hat er mir dann die Pistole auf die Brust und einen C-Compiler vor die Nase gesetzt.

    Nun läuft die Auswertung über C mit viel Gepointere, malloc und strstr (nicht C++!) und husch, husch, in ca. 2 min sind die ca. 6000 Fundstellen isoliert und in der Datenbank verpackt.

    C++ (mit streams und GUI-Frontend) brauchte 8 Minuten.

    Nun weisst du warum Logfileauswertung via php nicht das Gelbe vom Ei ist.

    so long,
    BlueJay, die so zu C/C++ kam...

  14. #14
    Registrierter Benutzer
    Registriert seit
    22.08.2002
    Ort
    Nürnberg
    Beiträge
    638
    [QUOTE=BlueJayDann kam die Zeit, wo das php-Progrämmchen so 2 Stunden am Rödeln und der Webmaster ziemlich sauer war. (ca. 6000 - 7000 Fundstellen aus ummi 300 - 500 MB auswerten)[/QUOTE]
    Deswegen macht man das ja auch nicht online, sondern offline mit cron und einem niedrigen Nicelevel. Das dauert dann zwar vielleicht einbischen. Wegen dem niedrigen Nicelevel ist das aber egal. Da Historie ausgewertet wird, ist es auch egal, ob die Historie nun ein paar Stunden (ein zwei Tage) älter ist oder nicht.

    Wer eine online Auswertung will, wertet sowie so nicht die Logfiles, sondern die aktuellen Zugriffe aus (z.B. direkt nach der Auslieferung des Contents) und bereitet diese gleich für die Darstellung auf.

    Pingu

  15. #15
    Registrierter Benutzer
    Registriert seit
    05.10.2004
    Beiträge
    9
    moin!

    die sache ist fuers intranet und da macht mir kein provider aerger
    die groesse der logdateien kann ich ja selber bestimmen.

    ich werd mal etwas weiter basteln

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •