Ankündigung

Einklappen
Keine Ankündigung bisher.

Openhab-Logfiles mit Status-Widget status.log ausgeben

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

    Openhab-Logfiles mit Status-Widget status.log ausgeben

    Hallo in die Runde,
    ich habe mal wieder eine Frage. Über Openhab habe ich die Möglichkeit Logfiles zu erstellen deren Einträge wie folgt aussehen:
    Code:
    2022-03-26 17:18:23.699 [INFO ] [nhab.core.model.script.ROHRREINIGUNG] - Test rohrreinigung.log EIN
    2022-03-26 17:18:26.159 [INFO ] [nhab.core.model.script.ROHRREINIGUNG] - Test rohrreinigung.log AUS
    Ist es möglich, diese Logdateien mit dem Status-Widget status.log in smartVISU anzeigen zu lassen? Wenn ja, wie muss ich das Widget konfigurieren und wo müssen die Logdateien abgelegt sein?

    Im Voraus vielen Dank für eure Unterstützung.

    Viele Grüße

    Christian

    #2
    Der OpenHAB-Treiber kennt das „log“-Kommando nicht. Deshalb kannst Du das Widget status.log nicht verwenden. smartVISU erwartet für Logs eine eigene Behandlung und erlaubt das Verknüpfen von normalen items mit diesem Widget nicht.

    Als Alternative bietet sich status.activelist an. Die Daten müssen dazu im json-Format in einem item vorliegen. Siehe hierzu die Inline-Doku und diesen Thread.

    Gruß
    Wolfram

    Kommentar


      #3
      kamikaze2508
      Deine Anfrage finde ich interessant und das hat tatsächlich was. Basierend darauf habe ich mir ein paar Gedanken und auch schon Tests gemacht um das Log direkt über die OpenHAB-Console, anstatt übers Dateisystem, abzufragen. Quick'n'Dirty läuft das schon. Gib mir noch ein paar Tage/Wochen, zum sauber implementieren.

      Gruß
      Patrik

      Kommentar


        #4
        Dazu drei Hinweise:
        • die Funktion widget.log() liefert die auf der aktiven Seite registrierten status.log widgets und deren abonnierte items. Diese müssen separat ausgewertet werden, da sie nicht Bestandteil von widget.listeners() sind.
        • eine gute Dokumentation des Websocket-Kommandos "log" liefert die Doku des shNG visu_websocket Plugins.
          Man kann den "init"-Parameter dazu verwenden, zwischen erstmaligem Auslesen aller Log-Daten und dem Nachliefern neuer Logdaten zu unterscheiden. Im Treiber "smarthomeng.js" ist das so umgesetzt. Die Routine manipuliert beim Nachliefern direkt das Array in widget.buffer.
        • Das Widget selbst braucht nur Daten für message, level und time:
          Code:
          	[{"message":"here comes the message","level":"WARNING","time":"2022-03-27T15:53:21.354815+02:00"},
          	{"message":"next message","level":"INFO","time":"2022-03-27T17:12:04.224683+02:00"}]
        Gruß
        Wolfram

        Kommentar


          #5
          Hallo Wolfram, hallo Patrik,

          vielen dank für eure Rückmeldungen. Dann warte ich doch mal ab, bis Patrik soweit ist. Bin schon gespannt. 👍😁

          Viele Grüße

          Christian

          Kommentar


            #6
            Funktioniert schon mal ganz ordentlich. Ich muss mir aber noch Gedanken zum Aktualisieren machen, wegen Refreshtimer, Duplikaten usw.

            Screenshot 2022-03-31 184042.png

            Gruß
            Patrik

            Kommentar


              #7
              kamikaze2508 :
              Der erste Teil ist soweit mal fertig. Sobald wvhn Zeit zum Prüfen hat, wird er den PR wohl mergen. Dann kannst du dir den aktuellen develop-Branch ziehen und mal testen.

              Da der Treiber neue Optionen hat, musst du in der Config einmal kurz einen anderen Treiber und dann wieder openHAB auswählen, damit die Standardwerte für die neuen Optionen gezogen werden. Wenn du die Zugangsdaten zur openHAB-Konsole geändert hast, musst du diese in den neuen Optionen zur Konsole anpassen. In jedem Fall musst du die Treibereinstellungen nun noch speichern, damit die neuen Optionen in die config.ini geschrieben werden.
              Screenshot 2022-04-02 135016.png

              Weiter musst du openHAB so konfigurieren, dass der Webserver auf dem smartVISU läuft Zugriff auf die openHAB-Konsole hat. Im Standard geht das nur über localhost auf 127.0.0.1. Hier hilft gegebenenfalls die openHAB-Doku weiter (https://www.openhab.org/docs/adminis...n/console.html).

              Beim Widget status.log musst du für das ungefilterte Log als Item 'default' angeben. Ansonsten kannst du auch einen Logger angeben, dann bekommst du nur die Einträge von dem angegeben Logger.
              Code:
              {{ status.log('log1', 'default', 50) }}
              {{ status.log('log2', 'openhab.event.ItemStateEvent', 10) }}
              Dann noch etwas Geduld, es dauert manchmal ein paar Sekunden nach dem Seitenaufbau, bis das Log aufgebaut wird. Bei mir sind es ca. 1-5 Sekunden.

              Es gibt noch keinen automatischen Refresh des Widget. Diese werden aktuell nur durch einen Seitenwechsel oder Browserrefresh aktualisiert. Kommt aber noch.
              Und weil ich gerade dabei bin, habe ich mir überlegt, könnte man noch basic.trigger verwenden um ein Kommando an die Konsole zu senden, um, z.Bsp. das Loglevel eines Loggers anzupassen usw.
              Genau genommen kann man über die Konsole so gut wie alles realisieren.

              Gruß
              Patrik
              Zuletzt geändert von PatrikG; 02.04.2022, 13:09.

              Kommentar


                #8
                Ich habe den PR erweitert.
                • Das Widget status.log holt nun alle 10 Sekunden das aktuelle Log und wird aktualisiert, sofern neue Einträge vorliegen.
                • Die Verwendung von basic.trigger ist nun möglich, sodass damit Befehle an die openHAB-Konsole gesendet werden können. Das Widget erwartet als name den Befehl und optional als value die Parameter zu dem Befehl.
                Code:
                {{ basic.trigger('trigger1', 'log:set', 'Debug', '', 'DEBUG openhab.event.ItemStateEvent') }}
                {{ basic.trigger('trigger2', 'log:set', 'Reset', '', 'ERROR openhab.event.ItemStateEvent') }}

                kamikaze2508 :
                Solltest du das vorab testen wollen, kannst du dir den develop-Branch auch von meinem Fork (https://github.com/PatrikG8/smartvisu/tree/develop) laden. Da ist außer den hier genannten Anpassungen nichts weiter drin.

                Kommentar


                  #9
                  ... und ich habe den PR gemerged, so dass er jetzt auch im regulären develop branch ist.

                  Danke für diese interessante Erweiterung!

                  Gruß
                  Wolfram
                  Zuletzt geändert von wvhn; 06.04.2022, 21:59.

                  Kommentar


                    #10
                    Hallo,

                    sehr cooles Feature -> Danke dafür.

                    Gruß
                    wu3mi

                    EDIT: restlicher Inhalt in ein eigenes Thema verschoben. wvhn
                    Zuletzt geändert von wvhn; 09.04.2022, 17:33.

                    Kommentar


                      #11
                      Ich habe heute noch festgestellt, dass der aktuelle Treiber nen kleinen Bug beim Seitenwechsel hat bzw. wenn man wieder zurück auf die Seite mit dem Log wechselt.

                      Der Fix ist inzwischen im develop.

                      Gruß
                      Patrik
                      Zuletzt geändert von PatrikG; 10.04.2022, 21:24.

                      Kommentar


                        #12
                        Hallo Patrik,

                        sorry, dass ich mich jetzt erst melde. Ich war ein paar Tage nicht im Lande. Ich werde mir den aktuellen develop ziehen und mir das neue Feature anschauen. Die Screenshots sehen aber auf jeden Fall vielversprechend aus.

                        Vielen Dank für deine Bemühungen.

                        Viele Grüße

                        Christian

                        Kommentar


                          #13
                          Hallo Patrik,
                          ich habe den develop gerade mal getestet. Wenn ich als Logger default angebe funktioniert die Anzeige des Logs. Es wird in diesem Fall alles ausgegeben, was auch in die Datei events.log geschrieben wird. Wenn ich allerdings versuche, einen von mir in der log4j2.xml erstellten Logger anzusprechen, im Testfall org.openhab.core.model.script.ROHRREINIGUNG, dann bleibt die Anzeige leer. Ich habe mal meine log4j2.xml als Anlage beigefügt (für den Upload als .txt). Dort wird ersichtlich, dass die von mir erstellten Logger in gesonderte Dateien schreiben.

                          Viele Grüße

                          Christian
                          Angehängte Dateien

                          Kommentar


                            #14
                            Hallo Christian,

                            ich kenne mich mit den Loggern nicht wirklich aus. Bekommst du auf der Console mit log:display org.openhab.core.model.script.ROHRREINIGUNG etwas angezeigt? Das Widget macht nämlich nur das. Wenn nicht, wird dein Logger bei log:list mitaufgelistet? Weiter ist es wohl so, dass log:display nur Ereignisse seit letztem Start auflistet.

                            Gruß
                            Patrik
                            Zuletzt geändert von PatrikG; 16.04.2022, 10:19.

                            Kommentar


                              #15
                              Hallo Patrik,
                              sorry für die erneut verzögerte Rückmeldung. Ich finde leider nicht immer gleich die Zeit um zu antworten. Ich habe in der Konsole
                              Code:
                              log:display org.openhab.core.model.script.ROHRREINIGUNG
                              aufgerufen. Der Eintrag ist leer. Es werden aber Einträge korrekt in die jeweiligen Logfiles geschrieben.
                              Der Logger wird aber in der Liste meiner Logger angezeigt:
                              Code:
                              openhab> log:list
                              Logger │ Level
                              ────────────────────────────────────────────────── ─┼──────
                              ROOT │ WARN
                              javax.jmdns │ ERROR
                              javax.mail │ ERROR
                              openhab.event │ INFO
                              openhab.event.AddonEvent │ ERROR
                              openhab.event.ChannelDescriptionChangedEvent │ ERROR
                              openhab.event.InboxUpdatedEvent │ ERROR
                              openhab.event.ItemAddedEvent │ ERROR
                              openhab.event.ItemChannelLinkAddedEvent │ ERROR
                              openhab.event.ItemChannelLinkRemovedEvent │ ERROR
                              openhab.event.ItemRemovedEvent │ ERROR
                              openhab.event.ItemStateEvent │ ERROR
                              openhab.event.RuleAddedEvent │ ERROR
                              openhab.event.RuleRemovedEvent │ ERROR
                              openhab.event.RuleStatusInfoEvent │ ERROR
                              openhab.event.StartlevelEvent │ ERROR
                              openhab.event.ThingAddedEvent │ ERROR
                              openhab.event.ThingRemovedEvent │ ERROR
                              openhab.event.ThingStatusInfoEvent │ ERROR
                              openhab.event.ThingUpdatedEvent │ ERROR
                              org.apache.cxf.jaxrs.sse.SseEventSinkImpl │ ERROR
                              org.apache.karaf.jaas.modules.audit │ INFO
                              org.apache.karaf.kar.internal.KarServiceImpl │ ERROR
                              org.apache.karaf.shell.ssh.SshUtils │ ERROR
                              org.apache.karaf.shell.support │ OFF
                              org.apache.sshd │ ERROR
                              org.eclipse.lsp4j │ OFF
                              org.jupnp │ ERROR
                              org.openhab │ INFO
                              org.openhab.automation.script │ TRACE
                              org.openhab.core.model.script.BATTERIERAUM │ INFO
                              org.openhab.core.model.script.BEWAESSERUNG │ INFO
                              org.openhab.core.model.script.EXTRA │ INFO
                              org.openhab.core.model.script.HEATING │ INFO
                              org.openhab.core.model.script.ROHRREINIGUNG │ INFO
                              org.openhab.core.model.script.RUECKSTAUKLAPPE │ INFO
                              org.openhab.core.model.script.ZISTERNE │ INFO
                              org.ops4j.pax.url.mvn.internal.AetherBasedResolver │ ERROR
                              org.ops4j.pax.web.pax-web-runtime │ OFF
                              su.litvak.chromecast.api.v2.Channel │ ERROR
                              openhab>
                              Gruß,
                              Christian

                              Edit: Ich habe nun auch mal in das offizielle OpenHab Community-Forum gepostet. Siehe: https://community.openhab.org/t/how-...to-extra-files. Evtl. muss ich etwas an meinen Loggern verändern.
                              Zuletzt geändert von kamikaze2508; 26.04.2022, 10:53.

                              Kommentar

                              Lädt...
                              X