Ankündigung

Einklappen
Keine Ankündigung bisher.

Logsystem in PHP

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

  • Logsystem in PHP

    Guten morgen liebe Community,

    ich möchte in mein System ein Logsystem einbauen. Hier sollen alle Informationen wie Fehler in Script etc. in eine Datei Eingetragen werden.
    Nun habe ich mir die Frage gestellt was passiert/wie gehe ich damit um, wenn aufeinmal die Datei von zwei Scripten gleichzeitig geöffnet wird.

    Danke für eure Hilfe.


  • #2

    Moin,

    eine einfache Alternative wäre das Loggen in eine Datenbank. Oder du nutzt eine Message Queue die das Schreiben in die Datei organisiert.

    Aber, ...
    - reicht nicht auch das normale Error-Logging?
    - ist das gleichzeitige Schreiben in diese Datei ein reales Problem?
    Relax, you're doing fine.
    RTFM | php.de Wissenssammlung | Datenbankindizes | Stay fit

    Kommentar


    • #3
      Ich kann MonoLog empfehlen. Mit MonoLog kann man auch mehrere LogSysteme ansprechen und Regeln verwalten. z.B. alle Fehler sollen in eine Datei, alle Debug-Logs in eine Datenbank eingetragen werden etc.
      https://github.com/Seldaek/monolog

      Kommentar


      • #4
        Fehler im Script sollten durch das normale Error Logging, Fehler in der Programmiereung mit Exceptions abgedeckt werden.
        Beides wird auf einbem produktiven System nicht mehr ausgelöst, denn auf produktiven Systemen gibt es keine Fehler im Script/Programmeirung mehr.

        Nun habe ich mir die Frage gestellt was passiert/wie gehe ich damit um, wenn aufeinmal die Datei von zwei Scripten gleichzeitig geöffnet wird.
        verstehe ich nicht, welche Datei?
        --neu
        Achso, thx VPh.

        Kommentar


        • #5
          Die Logdatei.
          Relax, you're doing fine.
          RTFM | php.de Wissenssammlung | Datenbankindizes | Stay fit

          Kommentar


          • #6
            Danke erstmal an alle für die Antworten.


            Zitat von VPh Beitrag anzeigen
            Aber, ...
            - reicht nicht auch das normale Error-Logging
            Ich stehe gerade etwas auf dem Schlauch, was meinst du mit 'normalem Error-Logging'?

            Kommentar


            • #7
              Zitat von WebInsel Beitrag anzeigen
              Ich stehe gerade etwas auf dem Schlauch, was meinst du mit 'normalem Error-Logging'?
              http://php.net/manual/en/errorfunc.configuration.php

              Kommentar


              • #8
                Zitat von WebInsel Beitrag anzeigen
                Danke erstmal an alle für die Antworten.



                Ich stehe gerade etwas auf dem Schlauch, was meinst du mit 'normalem Error-Logging'?
                Normalweise werden alle warnung und fehler bereits in eine log datei gespeichert, das macht PHP Automatisch du musst nur in der php.ini nachlesen wohin er das speichert
                apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp

                Kommentar


                • #9
                  Zitat von WebInsel Beitrag anzeigen
                  wie gehe ich damit um, wenn aufeinmal die Datei von zwei Scripten gleichzeitig geöffnet wird.
                  Du sperrst die Datei halt vorher mit flock
                  Moderne Logging-Frameworks machen das aber ohnehin.

                  Aber selber die PHP Errors zu loggen macht eigentlich nur Sinn, wenn man die Logeinträge noch mit eigenen Daten anreichern will oder die Daten in anderen Formaten wegschreiben will.
                  (Wir schreiben z.B. die PHP-Errors in eine Elastic-Search Datenbank via Logstash und können die dann mit Kibana zentral auswerten (ELK-Stack))

                  Kommentar


                  • #10
                    Zitat von Meister1900 Beitrag anzeigen

                    Du sperrst die Datei halt vorher mit flock
                    Moderne Logging-Frameworks machen das aber ohnehin.
                    per default nicht https://github.com/Seldaek/monolog/b...andler.php#L44

                    Ich wüsste auch nicht, was ein lock beim logging für einen Sinn macht.

                    Kommentar


                    • #11
                      Zitat von tomBuilder Beitrag anzeigen
                      Ich wüsste auch nicht, was ein lock beim logging für einen Sinn macht.
                      Wenn das Loggen aus mehreren Prozessen/Skripten in eine zentrale Datei erfolgt denke ich ist das beim Schreiben der Daten schon zu empfehlen. Einige Funktionen wie file_put_contents haben dies schon eingebaut (Flag LOCK_EX).
                      PHP-Klassen auf github

                      Kommentar


                      • #12
                        Zitat von jspit Beitrag anzeigen
                        Wenn das Loggen aus mehreren Prozessen/Skripten in eine zentrale Datei erfolgt denke ich ist das beim Schreiben der Daten schon zu empfehlen. Einige Funktionen wie file_put_contents haben dies schon eingebaut (Flag LOCK_EX).
                        Aber soweit ich sehe nicht per default on ($flags = 0).
                        Ich halte es nach wie vor für unnötig, ja sogar schädlich, da ein Logging nicht mehr möglich ist, bleibt einer der Prozesse im Lock hängen.

                        Wenn Du wirklich mehrere Prozesse auf eine Datei loggen willst und es eine berechtigte sorge gibt,
                        daß während des fwrite() der einen Zeile LogEintrag ein konkurrierender Schreibvorgang diesen zerreist und Du meinst die Lösung sei ein Lock,
                        dann bleibe dabei.


                        Kommentar


                        • #13
                          Zitat von tomBuilder Beitrag anzeigen
                          Aber soweit ich sehe nicht per default on ($flags = 0).
                          Ein Lock ist auch für die überwiegende Anzahl Anwendungen von file_put_contents weder notwendig noch sinnvoll.

                          Zitat von tomBuilder Beitrag anzeigen
                          Ich halte es nach wie vor für unnötig, ja sogar schädlich, da ein Logging nicht mehr möglich ist, bleibt einer der Prozesse im Lock hängen.
                          Der Programmierer muss schon dafür sorgen das bei Benutzung von flock der Lock auch wieder zeitnah freigegeben wird. Mit file_put_contents ist ein Vergessen der Freigabe praktisch unmöglich.
                          Bei der Programmierung ist darauf zu achten, eine sichere Freigabe zu gewährleisten und die Locks zeitlich so kurz wie möglich zu halten..
                          Was das Fehlerlogging betrifft sind Einsteiger besser beraten sich bei den vorhandenen Hausmitteln von PHP zu bedienen.


                          Zitat von tomBuilder Beitrag anzeigen
                          Wenn Du wirklich mehrere Prozesse auf eine Datei loggen willst und es eine berechtigte sorge gibt,
                          daß während des fwrite() der einen Zeile LogEintrag ein konkurrierender Schreibvorgang diesen zerreist und Du meinst die Lösung sei ein Lock,
                          dann bleibe dabei.
                          Tue ich auch, da ich unter PHP für Dateisysteme keine echte Alternative sehe und eigene Loggerklassen seit Jahren ohne Probleme laufen.

                          PHP-Klassen auf github

                          Kommentar


                          • #14
                            Zitat von jspit Beitrag anzeigen
                            Wenn das Loggen aus mehreren Prozessen/Skripten in eine zentrale Datei erfolgt denke ich ist das beim Schreiben der Daten schon zu empfehlen. Einige Funktionen wie file_put_contents haben dies schon eingebaut (Flag LOCK_EX).
                            Das sollten halt nicht mehrere Prozesse gleichzeitig machen, da sie sonst aufeinander warten müssen und das kostet dann Performance, vor allem wenn viele asynchrone Tasks laufen.

                            Kommentar


                            • #15
                              So etwas brauch ich halt öfter mal für Applikationen mit Interprozesskommunikation um nicht mehrere Dateien chronologisch zusammenbasteln zu müssen. Viele asynchrone Tasks laufen bei mir auch nicht, daher kenne ich auch keine Performanceprobleme beim Logging.
                              PHP-Klassen auf github

                              Kommentar

                              Lädt...
                              X