Ankündigung

Einklappen

Hinweis

Die Forenregeln wurden überarbeitet (Stand 7.11.22). Sie sind ab sofort verbindlich. Wir bitten um Beachtung.
Mehr anzeigen
Weniger anzeigen

Log je LBS

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

    #31
    if (...) {writeToCustomLog(...);} ist wohl nicht zuviel verlangt Ist einfach flexibler so - und ich kann mich um wichtigere Dinge kümmern...
    EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

    Kommentar


      #32
      Wow, das liest sich schon super - vor allem der Rechtsklick + löschen. Wer hat eigentlich die Anzeige in der Visu bei Fehlern gewünscht?!

      Im Ernst, wenn ich dann mal irgendwann fertig bin, will ich natürlich über Fehler im Log informiert werden (Fehler gibt es dann ja nicht mehr, weil ich ja fertig bin). Da wir alle hier noch wild rumexperimentieren, machen diese Erweiterungen total Sinn und ich freue mich schon drauf. Der Enduser wird das sicher nicht brauchen, aber die meisten sind hier eher Poweruser.

      Danke jetzt schon für das Update!

      Kommentar


        #33
        @ Winni: Ich löse das so: In alle LBS eine kleine immer-gleiche Funktion einbauen. Z.B. so:

        PHP-Code:
        function tracelog($lvl_from,$loglevel,$id,$pre,$s) {
        // lvl = LogLevel, ab dem Ausgabe erfolgen soll | loglevel = aktueller LogLevel | pre = PreFix | s = Text
        if ($loglevel >= $lvl_from ) {
        writeToTraceLog(0,true,"LBSLBSID($id$pre$s");
        }

        und der Aufruf dann ganz schlank und ohne IF z.B. (wenn E4 Dein LogLevel ist)

        PHP-Code:
        tracelog(3,$E[4]['value'],$id,"SMA","JSON:".$data_json); 
        Mit der neuen Funktion von Christian kann man's noch differenzierter ausbauen. Und durch die Lösung per Funktion könnte Christian jede Woche neue Log-Möglichkeiten liefern und man müsste nur an einer Stelle ändern...
        Zuletzt geändert von saegefisch; 19.04.2016, 22:25.

        Kommentar


          #34
          Zitat von saegefisch Beitrag anzeigen
          @
          und der Aufruf dann ganz schlank und ohne IF z.B. (wenn E4 Dein LogLevel ist)
          Ist mir schon klar, wollte aber eine additive eigene Funktion vermeiden und bei der Fehlersuche stören mich als Anfänger die vielen IFs einfach. Wieviele Parameter ich einer Funktion übergeben muss / kann ist eher kein Thema.
          Aber kein Problem, krieg das durchaus gebacken

          Kommentar


            #35
            Ich hatte keinen Zweifel, dass Du es gebacken bekommst. Aber manchmal hilft ja ein Snippet als Ideenlager. So eine Lösung ist im Coding optisch schlanker und besser zu lesen, als die vielen IFs. Die haben mich nämlich genau wie Dich gestört...

            Kommentar


              #36
              So, noch schnell ein paar Daten hinzugefügt - nu is aber auch genug

              Der grüne Balken zeigt die "Aktualität" des Logs an (bezogen auf die letzten 24h).

              Bildschirmfoto 2016-04-20 um 08.34.44.png

              Zuletzt geändert von gaert; 20.04.2016, 08:36.
              EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

              Kommentar


                #37
                Supercool! Vielen Dank schonmal vorab.
                Kind regards,
                Yves

                Kommentar


                  #38
                  Bidde bidde Eventuell widme ich mich jetzt noch dem TraceLog (Einstellungen in der INI).
                  EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                  Kommentar


                    #39
                    Also ich verwende in meinem LBS-Code auch immer nur (fixe) writeToTraceLog-Befehle, welche via E2 getriggert werden. So habe ich während der Entwicklung Log-Einträge, ein User kann dies aber später bei Problemen auch aktivieren, ohne dass am Code etwas geändert werden muss.

                    Und im tracelog habe ich dann auch nicht 25 MB Daten, sondern nur MEINE Einträge. (Das global muss natürlich deaktiviert sein.)

                    Aber ich begrüsse natürlich jetzt die neue Log-Funktion. Macht es zusätzlich noch bequemer (vorallem zum Auswerten und Löschen). Aber ich fands schon vorher akzeptabel. (Danke an gaert)

                    Kommentar


                      #40
                      Richtig - so handhabe ich das eigentlich auch Aber es schadet ja nicht die Logfunktionen etwas zu erweitern. Die endgültige Version sieht jetzt wie folgt aus - der grüne Balken zeigt nun (exponentiell) die noch verbleibende Zeit, bis das Log automatisch gelöscht wird. Als "Nebeneffekt" erkennt man sofort, ob ein "frischer" Log-Eintrag vorliegt

                      Bildschirmfoto 2016-04-20 um 17.41.01.png
                      EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                      Kommentar


                        #41
                        Christian, ich muss dir mal ein grosses Lob aussprechen. Auch wenn du manchmal strikt gegen einen Userwunsch bist: lässt du dich dann doch noch erweichen und beginnst (manchmal auch gegen deiner persönlichen Meinung) mit der Umsetzung, so zeigst du eine wirklich bewunderswerte Programmierlust und Detailverliebheit, dass nicht nur einfach eine neue Funktion rauskommt, sondern diese den so typischen Edomi-Style® besitzt. (Wie z.B. jetzt diese Logfunktion, welche weit über die Erwartungen hinausgeht.)

                        Auch wenn ich in diesem Fall nicht wirklich etwas vermisst hätte, so staune ich einfach nur, was du dir wieder ausgedenkt hast und freue mich natürlich umso mehr, damit dann arbeiten zu können.

                        Wenn du dich wirklich mal in ein Problem reinkniest, dann legst du solch einen Lauf hin, wie ich es bis jetzt selten erlebt habe. Und erstaunlicherweise noch recht fehlerfrei.

                        Muss mal zwischendurch gesagt werden! Grosser Respekt!

                        Kommentar


                          #42
                          Besten Dank für die Blumen! Ich bin nunmal "Perfektionist" (innerhalb meines bescheidenen Universums zumindest) - daher ist das Motto: Richtig oder garnicht. Wobei "richtig" natürlich relativ ist... Und ich bemühe mich immer um eine frisches Denken, d.h. z.B. anstelle schnöder Auflistungen (die niemanden interessieren) versuche ich stets die Praxisrelevanz im Auge zu behalten. Dies gelingt natürlich nicht immer (schon aus Zeitgründen und GUI-Einschränkungen im Browser), aber ich versuche mein Bestes zu geben EDOMI fühlt sich nicht zufällig so schnell an - daher muss ich einigen Wünschen die rote Karte zeigen, denn EDOMI soll kein "zugeballertes" System werden (man denke in diesem Kontext z.B. an die ersten Word-Versionen... 10.000 Icons stapelten sich im Fenster und für das Dokument blieben noch 200px übrig)
                          EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                          Kommentar


                            #43
                            Noch eine "kleine" Neuerung für alle Logging-Freunde Hier ein Auszug aus der (neuen) edomi.ini (lustig wird noch das Update der ini-Datei... Viele neue Parameter nebst Beschreibung - und einige alte Parameter fallen weg...):

                            # System-Logs
                            # 0 = deaktiviert
                            # 1 = Text-Format
                            # 2 = HTML-Format
                            global_logSysEnabled=2

                            # Fehler-Logs
                            # 0 = deaktiviert
                            # 1 = Text-Format
                            # 2 = HTML-Format
                            global_logErrEnabled=2

                            # Trace-Log
                            # 0 = deaktiviert
                            # 1 = Text-Format
                            # 2 = HTML-Format
                            global_logTraceEnabled=2

                            # Monitor-Logs
                            # 0 = deaktiviert (diese Einstellung hat Priorität gegenüber dem System-KO[6])
                            # 1 = Text-Format
                            # 2 = HTML-Format
                            global_logMonEnabled=2

                            # Individual-Logs
                            # 0 = deaktiviert
                            # 1 = Text-Format
                            # 2 = HTML-Format
                            global_logCustomEnabled=2


                            # Separator-Zeichenkette für Text-Format
                            # Zeichenkette (oder einzelnes Zeichen) zur Trennung der einzelnen Log-Variabeln
                            # Achtung: Erlaubt sind nur lesbare ASCII-Zeichen (z.B. '///'). Nicht erlaubt sind Angaben wie chr(9) oder ähnliches!
                            # Wird dieser Parameter leer gelassen (''), wird automatisch das TAB-Zeichen verwendet.
                            global_logTextSeparator=''


                            # Speicherdauer: System-Logs
                            # Das Log wird nach x Tagen ohne Zugriff (Log-Eintrag) automatisch gelöscht.
                            # 1..oo = Tage
                            global_logSysKeep=7

                            # Speicherdauer: Fehler-Logs und Trace-Log
                            # Das Log wird nach x Tagen ohne Zugriff (Log-Eintrag) automatisch gelöscht.
                            # 1..oo = Tage
                            global_logErrKeep=7

                            # Speicherdauer: Monitor-Logs
                            # Das Log wird nach x Tagen ohne Zugriff (Log-Eintrag) automatisch gelöscht.
                            # 1..oo = Tage
                            global_logMonKeep=2

                            # Speicherdauer: Individual-Logs
                            # Das Log wird nach x Tagen ohne Zugriff (Log-Eintrag) automatisch gelöscht.
                            # 1..oo = Tage
                            global_logCustomKeep=1


                            # KNX-Kommunikation detailiert protokollieren
                            # Bei Bedarf können detailierte Informationen zur KNX-Kommunikation im Trace-Log bzw. im Fehler-Log protokolliert werden.
                            # 0 = deaktiviert
                            # 1 = nur Fehler loggen (Fehler-Log)
                            # 2 = nur Fehler loggen (Trace-Log)
                            # 3 = nur Fehler loggen (Fehler-Log und Trace-Log)
                            # 4 = Debug-Modus: gesamte Kommunikation einschließlich Fehlern loggen (Trace-Log)
                            global_logTraceLevelKnx=1
                            Zuletzt geändert von gaert; 21.04.2016, 08:22.
                            EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                            Kommentar


                              #44
                              So, nu aber... Aus Platzgründen wird der Dateiname erst per Rechtsklick angezeigt (braucht man ja ohnehin eher nicht zu wissen):

                              Bildschirmfoto 2016-04-21 um 10.41.33.png
                              EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                              Kommentar


                                #45
                                wintermute

                                Du hast mir das letzte Mal deine "alte" LogFunktion gut erklärt ... könntest du mir mit ein wenig mehr Prosa als es sonst so hier verwendet wird, die neue Funktion erklären ?

                                Die Alte war ja z.B.:
                                PHP-Code:
                                LB_LBSID_DEBUG($id,'iTunes | E03 | IP-Adresse ist:        '.$E[3]['value']); 
                                PHP-Code:
                                function LB_LBSID_DEBUG($id,$a) {writeToTraceLog(0,true,"LBSLBSID($id): ".$a)}; 

                                Christian's neuste Kreation ...
                                Funktion: writeToCustomLog($logName,$logExpire,$logLevel,$lo gMsg,$separator)

                                logName: Name des Logs, z.B. "LBS19000001 Fehlerlog"
                                logExpire: Anzahl der Tage nach denen das Log gelöscht werden soll (wird im Dateinamen untergebracht)
                                logLevel: Beliebiger Wert/String (wird aktuell nur ins Log geschrieben)
                                logMsg: die Log-Nachricht
                                separator: beliebige(s) Zeichen zum Trennen von Timestamp, logLevel und logMsg (default ist TAB)

                                Wenn ich mir z.B. deinen LBS 19000153 anschaue:
                                PHP-Code:
                                LB_LBSID_debug($id,"Invalid timezone $timezone specified, falling back to GMT",3); 
                                PHP-Code:
                                function LB_LBSID_debug($id,$s,$l=6) {
                                $a=array("Emergency","Alert","Critical","Error","Warning","Notice","Informational","Debug");
                                $E=getLogicEingangDataAll($id);
                                $DEBUG=$E[7]['value'];
                                $l<$DEBUG && writeToCustomLog("LBSLBSID",$l,"(ID$id) ".$a[$l].": ".$s); 
                                Danke und LG, Dariusz
                                GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL

                                Kommentar

                                Lädt...
                                X