Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] .log Datei Verwalten

Einklappen

Neue Werbung 2019

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

  • [Erledigt] .log Datei Verwalten

    Hallo Zusammen,

    ich komme nicht mehr weiter, ich habe eine PHP Website auf der bei bestimmten Veränderungen Daten in eine output.log Datei geschrieben werden.

    Beispiel Einträge:

    2010-04-20 11:29:43 [USER] admin logged in from 10.35.40.40
    2010-04-20 11:30:58 [USER] admin logged out from 10.35.40.40
    Diese Datei kann ein Administrator dann auf der Website ausgeben, anzeigen oder auswerten lassen.

    Damit diese nicht zu Groß und unübersichtlich wird habe ich ein Script gebastelt

    Script Theorie:

    Wenn in der Datei mehr als 250 einträge sind, soll alles in eine andere Datei (2010-04-output.log) verschoben werden und die Neuen Einträge gehen wieder ins output.log, auf der Website kann der administrator dann aussuchen welches .log angezeigt werden soll.

    Script Code:

    PHP-Code:
    $outputdatei="./daten/output.log";

    if(
    count(file($outputdatei))>="250")
    {
     
    $outputlog="./backup/".date("Y-m")."-output.log";
                            
     foreach(
    file($outputdatei) as $value)
     {
      
    file_put_contents($outputlog$valueFILE_APPEND);
      }
                            
      
    file_put_contents($outputdatei"");
     }

    Dies Funktioniert auch Super, jedoch ist es nicht geordnet ich würde es Gerne noch verfeinern:

    Es soll in 2010-04-output.log alles Eingetragen sein, was auch im April geändert wurde und im 2010-05-output.log halt alles vom Mai.

    Mein Lösungsvorschlag wäre, dass ich aofort imemr in das aktuelle .log schreibe, aber das wären zuviele einträge, ich möchte ja das das output.log das aktuelle ist und da nicht mehr als 250 zeilen drinn stehen sollten, in den 2010...logs kann beliebig viel drinn stehen.

    Meine Frage:

    Wie kann ich es am besten lösen?


  • #2
    wenn die aktuelle log zu groß wird ODER sich der monat geändert wird, den inhalt ans ENDE der monatslog schreiben.
    Zitat von nikosch
    Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

    Kommentar


    • #3
      Ich müsste dann jedesmal beim schreiben ins .log den letzten eintrag untersuchen und prüfen schon ein neuer monat begonnen hat oder nicht.

      Falls ja, soll alles ans Ende des jeweiligen output.log geschrieben werden.

      Kommentar


      • #4
        korrekte ausage.
        Zitat von nikosch
        Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

        Kommentar


        • #5
          Dann mache ich mich mal ans Werk, werde mci hwieder nach der Mittagspause melden

          Kommentar


          • #6
            Ja es Funktioniert, ich habe einen Gedanken fehler die ganze zeit gehabt, ich habe mir sorgen gemacht, was passiert wenn in der datei unterschiedliche einträge mit verschiedenen Datums/Datem? sind, aber das brauche ich ja gar nicht zu berücksichtigen, da ich jetzt bei jedem Schreibvorgang überprüft, ob der letzte eintrag nicht veraltet ist und in eine andere datei gehört.

            Danke tkausl hast mich auf die richtige bahn gebracht, hier mein PHP-Code:

            PHP-Code:
            $dateipfad="./daten/output.log";
            $dateiinhalt=file($dateipfad);
            $letztereintrag=end($dateiinhalt);
            $endzeit=substr($letztereintrag07); // Ergebniss: 2010-04

            // Wenn der letzet Eintrag älter ist als das Aktuelle Datum    
            if($endzeit!=date("Y-m"))
            {
             
            // Neues log z.B. 2010-04-output.log
             
            $neueslog="./backup/".$endzeit."-output.log";
                        
             foreach(
            $dateiinhalt as $value)
             {
              
            // Verschiebe alles aus dem output.log ins 2010-04-output.log
              
            file_put_contents($neueslog$valueFILE_APPEND);
             }

             
            // Leere das output.log        
             
            file_put_contents($dateipfadNULL);
            }
            else
            {
             if(
            count($dateiinhalt)>="250")
             {
              
            // Neues log z.B. 2010-04-output.log
              
            $neueslog="./backup/".$endzeit."-output.log";
                        
              foreach(
            $dateiinhalt as $value)
              {
               
            // Verschiebe alles aus dem output.log ins 2010-04-output.log
               
            file_put_contents($neueslog$valueFILE_APPEND);
              }

              
            // Leere das output.log        
              
            file_put_contents($dateipfadNULL);
             }
            }

            $datum=date("Y-m-d H:i:s ");
            $logeintrag=$datum."Eintrag";
                
            // Schreibe den neusten Eintrag ins output.log    
            file_put_contents($dateipfad$logeintragFILE_APPEND); 

            Kommentar


            • #7
              Ich muss sagen du bist ein Wunder
              Du bist der erste, dem ich nur gesagt habe wie man es macht, und der nicht nach dem Quelltext gefragt hat sondern es selbst so umgesetzt hat, wie es ihm gesagt wurde
              Großes Lob
              Zitat von nikosch
              Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

              Kommentar

              Lädt...
              X