Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [Vorlage] JS: Log-Datei aufbereiten für VIS

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Vorlage] JS: Log-Datei aufbereiten für VIS

    This topic has been deleted. Only users with topic management privileges can see it.
    • liv-in-sky
      liv-in-sky @Mic last edited by liv-in-sky

      @Mic

      kurz ne dumme frage - läuft das script wenn redis installiert ist ?

      erledigt - war ein mischmasch der datenpunkte bei der umstellung auf redis

      1 Reply Last reply Reply Quote 0
      • Mic
        Mic Developer last edited by Mic

        Breaking News 🙂

        Es gibt jetzt eine Version 2.01a, diese behebt alle bisherigen Fehler nach meinen umfangreichen Tests. Ab Version 1.0 wurden bei jedem neuen Logeintrag sofort die States ausgelesen und geschrieben, aber das war nicht zielführend da zu langsam, wenn schnell viele neue Logs reinkommen im kleinen ms-Bereich oder darunter. Daher wurden dadurch nicht alle Log-Einträge mitgeloggt.

        Ich habe daher umgestellt, nun werden die Datenpunkte nur alle paar Sekunden aktualisiert, gemäß Option STATE_UPDATE_SCHEDULE, voreingestellt alle 20 Sekunden. 2-3 Sekunden funktioniert auch.

        Außerdem funktioniert nun auch das Zusammenfassen der Logeinträge zuverlässig:

         * merge:      Log-Einträge mit gleichem Text zusammenfassen. Beispiel:
         *                  -----------------------------------------------------------------------------------
         *                  2019-08-17 20:00:00.335 - info: javascript.0 script.js.Wetter: Wetterdaten abrufen.
         *                  2019-08-17 20:15:00.335 - info: javascript.0 script.js.Wetter: Wetterdaten abrufen.
         *                  2019-08-17 20:30:00.335 - info: javascript.0 script.js.Wetter: Wetterdaten abrufen.
         *                  -----------------------------------------------------------------------------------
         *             Daraus wird dann nur noch eine Logzeile mit letztem Datum/Uhrzeit und hinzufügen von "[3 Einträge]":
         *                  -----------------------------------------------------------------------------------
         *                  2019-08-17 20:30:00.335 - info: javascript.0 [3 Einträge] script.js.Wetter: Wetterdaten abrufen.
         *                  -----------------------------------------------------------------------------------
         *
        

        Das ist jetzt auch pro Eintrag ("id") in den Optionen für LOG_FILTER ein- und ausstellbar, und nicht mehr global.

        Zum Aktualisieren:
        1.) Bestehendes Script stoppen
        2.) Alle Datenpunkte löschen
        3.) Script durch neues Script vollständig ersetzen, also nicht nur unterhalb der Optionen
        4.) Alle Optionen neu setzen
        5.) Starten und freuen 🙂

        Freue mich auf Euer Feedback, ob es auch bei Euch so gut und zuverlässig läuft.

        Hier zum Script: Version 2.01a

        Nachtrag:
        Datenpunkte ".logMostRecent" sind nicht mehr verfügbar, machen auch keinen Sinn, wenn viele Logeinträge gleichzeitig reinfliegen. Stattdessen kann man den Datenpunkt ".log" auf Veränderung überwachen, und dann dessen Inhalt entsprechend auswerten, um etwa Push-Mitteilungen etc. zu veranlassen. Gerne gebe ich Euch hierfür bei Bedarf ein Script-Beispiel.

        crunchip Dr. Bakterius liv-in-sky 3 Replies Last reply Reply Quote 3
        • crunchip
          crunchip Forum Testing Most Active @Mic last edited by

          @Mic habs gleich mal installiert, jedoch erstmal ohne etwas zu verändern und ohne gross durchzulesen.

          Ich hab ja gar keine Homematic😂

          Vielen, vielen Dank für dein Engagement 👌

          1 Reply Last reply Reply Quote 0
          • Dr. Bakterius
            Dr. Bakterius Most Active @Mic last edited by

            @Mic Super! Vielen Dank!

            Mal eine Frage: kann man aus dem Skript nicht einen vollwertigen Adapter machen? Das wäre einfacher zu handhaben. So muss man immer wieder die Einstellungen neu vornehmen. Da muss man Filter neu setzen, benötigte Datenpunkte ein- oder auskommentieren, usw. Wäre schön, wenn das möglich wäre. Oder zumindest die Einstellungen gleich lassen und nur bei Bedarf ergänzen und das hier mitteilen. Aber ein Adapter wäre eindeutig praktischer.

            Mic 1 Reply Last reply Reply Quote 1
            • Nashra
              Nashra Most Active Forum Testing last edited by

              Hallo @Mic , vielen vielen Dank für deine Arbeit hier 👍 👍 👍 👍 👍 👍

              1 Reply Last reply Reply Quote 0
              • liv-in-sky
                liv-in-sky @Mic last edited by

                @Mic

                auch von mir ein großes danke - da macht die "fehlererzeugung" beim scripten gleich viel mehr spaß

                1 Reply Last reply Reply Quote 0
                • S
                  slonnet last edited by

                  @Mic

                  LogFile201a.png

                  Sauber!
                  Die Merge Funktion habe ich noch nicht getestet, aber ich kann bestätigen das keine Log Einträge mehr verschluckt werden!
                  Danke für die schnelle Instantsetzung 😉

                  1 Reply Last reply Reply Quote 0
                  • Nashra
                    Nashra Most Active Forum Testing last edited by

                    Moin, jetzt muß ich doch mal nachfragen. Was muß wie eingetragen werden im Script damit
                    das Log vom Slave ausgewertet wird. Bekomme das einfach nicht hin mit dem Pfad und so.

                    Mic 1 Reply Last reply Reply Quote 0
                    • Mic
                      Mic Developer @Dr. Bakterius last edited by

                      Vielen Dank für Euer Feedback 🙂

                      @Dr-Bakterius sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:

                      Mal eine Frage: kann man aus dem Skript nicht einen vollwertigen Adapter machen? Das wäre einfacher zu handhaben. So muss man immer wieder die Einstellungen neu vornehmen. Da muss man Filter neu setzen, benötigte Datenpunkte ein- oder auskommentieren, usw. Wäre schön, wenn das möglich wäre. Oder zumindest die Einstellungen gleich lassen und nur bei Bedarf ergänzen und das hier mitteilen. Aber ein Adapter wäre eindeutig praktischer.

                      Stimme Dir absolut zu, dass das in einen Adapter sollte. Mich schreckt noch die Einstellungs-Seite des Adapters ab, das wird sehr aufwendig, um verschiedene Filter einfach erstellen zu lassen. Aber kommt früher oder später.
                      Der Sprung auf die 2.00 hatte viele Änderungen, da blieben auch Änderungen in den Einstellungen leider nicht aus. Aber werde hier zukünftig Änderungen vermeiden, so gut es geht.

                      1 Reply Last reply Reply Quote 0
                      • Mic
                        Mic Developer @Nashra last edited by

                        @Nashra sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:

                        Moin, jetzt muß ich doch mal nachfragen. Was muß wie eingetragen werden im Script damit
                        das Log vom Slave ausgewertet wird. Bekomme das einfach nicht hin mit dem Pfad und so.

                        Ok, also mit ioBroker als Slave habe ich noch nie gearbeitet.
                        Grundsätzlich kann man hier halt den Pfad angeben:

                        // Pfad zum Log-Verzeichnis auf dem Server.
                        // Standard-Pfad unter Linux: '/opt/iobroker/log/'. Wenn das bei dir auch so ist, dann einfach belassen.
                        const LOG_FS_PATH = '/opt/iobroker/log/';
                        

                        Was man da angeben muss, um auf eine andere Maschine zuzugreifen, weiß ich leider nicht, dazu reichen meine Linux-Kenntnisse (noch) nicht. Versuche mal, von der Linux-Shell des Masters z.B. mit dem Editor "nano" eine Datei des Slaves zu öffnen. Geht das überhaupt?

                        Nashra 1 Reply Last reply Reply Quote 0
                        • Nashra
                          Nashra Most Active Forum Testing @Mic last edited by

                          @Mic sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:

                          Was man da angeben muss, um auf eine andere Maschine zuzugreifen, weiß ich leider nicht, dazu reichen meine Linux-Kenntnisse (noch) nicht. Versuche mal, von der Linux-Shell des Masters z.B. mit dem Editor "nano" eine Datei des Slaves zu öffnen. Geht das überhaupt?

                          Das ist das Problem @Mic , mit Linux kenn ich mich auch nicht aus ☹

                          liv-in-sky 1 Reply Last reply Reply Quote 0
                          • liv-in-sky
                            liv-in-sky @Nashra last edited by liv-in-sky

                            @Nashra

                            hab keinen slave daher vermutung:

                            du hast doch eine javascript instanz auf dem slave installiert - und darin müßte dann das script nochmal laufen und dies sollte auf die lokale platte zugreifen ?

                            lieg ich damit falsch ?

                            und natürlich müßtest du dann die datenpunkte im script in einen anderen ordner speichern - sonst überschreiben sie sich - es muss das 2te script vollständig im bezug der datenpunkte geändert sein

                            Nashra 1 Reply Last reply Reply Quote 0
                            • D
                              darkiop Most Active last edited by

                              Das Log des Slaves sollte meines Wissens im Log des Masters enthalten sein.

                              Nashra 1 Reply Last reply Reply Quote 0
                              • Nashra
                                Nashra Most Active Forum Testing @darkiop last edited by Nashra

                                @darkiop, der Slave hat ein eigenes Log

                                1 Reply Last reply Reply Quote 0
                                • A
                                  aleks-83 last edited by

                                  Vielen Dank für das coole Skript.
                                  Ich habe es bei mir eingerichtet und in die vis eingebunden.

                                  Leider bekomme ich die Spaltenbreite noch nicht angepasst.
                                  Wie mache ich das?

                                  Mic 1 Reply Last reply Reply Quote 0
                                  • Mic
                                    Mic Developer @aleks-83 last edited by

                                    @aleks-83 sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:

                                    Vielen Dank für das coole Skript.
                                    Ich habe es bei mir eingerichtet und in die vis eingebunden.

                                    Leider bekomme ich die Spaltenbreite noch nicht angepasst.

                                    Hi Aleks,
                                    geht zum einen über CSS, als auch über das Widget "basic - table". Hast du mal danach hier im Forum gesucht? Über das Widget einzustellen wurde etwa hier kurz beschrieben: https://forum.iobroker.net/post/293422

                                    1 Reply Last reply Reply Quote 1
                                    • A
                                      aleks-83 last edited by

                                      Perfekt, Danke !

                                      Man braucht also nur in dem Widget die KollumnAnzahl angeben und schon erscheinen Eingabefelder für einzelnen Breiten.

                                      1 Reply Last reply Reply Quote 0
                                      • Nashra
                                        Nashra Most Active Forum Testing @liv-in-sky last edited by

                                        @liv-in-sky sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:

                                        @Nashra

                                        hab keinen slave daher vermutung:

                                        du hast doch eine javascript instanz auf dem slave installiert - und darin müßte dann das script nochmal laufen und dies sollte auf die lokale platte zugreifen ?

                                        lieg ich damit falsch ?

                                        Nein, genau dies versuche ich. Problem ist die Pfadangabe im Script für den Slave da es sonst auf das Log des Master zugreift. Habe den Pfad auch angegeben aber es klappt nicht, schätze das hier Benutzername und Passwort mit
                                        eingegeben werden müßen. Nur wie mache ich das?

                                        und natürlich müßtest du dann die datenpunkte im script in einen anderen ordner speichern - sonst überschreiben sie sich - es muss das 2te script vollständig im bezug der datenpunkte geändert sein

                                        Dies war kein Problem, einfach Log-Scripte-Slave eingetragen mit der entsprechenden Javainstanz.

                                        liv-in-sky 1 Reply Last reply Reply Quote 0
                                        • Nashra
                                          Nashra Most Active Forum Testing last edited by

                                          Und noch etwas...
                                          Um 0 Uhr bekomme ich folgenden Error im Log

                                          2019-09-28 00:00:02.102 - info: javascript.0 script.js.Meine_Geräte.VIS-Logs: Start new Tail process. File path to current log: [/opt/iobroker/log/iobroker.2019-09-28.log]
                                          2019-09-28 00:00:02.126 - error: javascript.0 Error in callback: Error [ERR_UNHANDLED_ERROR]: Unhandled error. ('watch for /opt/iobroker/log/iobroker.2019-09-28.log failed: Error: ENOENT: no such file or directory, stat \'/opt/iobroker/log/iobroker.2019-09-28.log\'')
                                          2019-09-28 00:00:02.126 - error: javascript.0 at Tail.emit (events.js:187:17)
                                          2019-09-28 00:00:02.127 - error: javascript.0 at Tail.watch (/opt/iobroker/node_modules/iobroker.javascript/node_modules/tail/lib/tail.js:136:12)
                                          2019-09-28 00:00:02.127 - error: javascript.0 at new Tail (/opt/iobroker/node_modules/iobroker.javascript/node_modules/tail/lib/tail.js:87:10)
                                          2019-09-28 00:00:02.128 - error: javascript.0 at Object.startTailingProcess (script.js.Meine_Geräte.VIS-Logs:770:14)
                                          2019-09-28 00:00:02.128 - error: javascript.0 at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1888:34)
                                          2019-09-28 00:00:02.128 - error: javascript.0 at ontimeout (timers.js:438:13)
                                          2019-09-28 00:00:02.128 - error: javascript.0 at tryOnTimeout (timers.js:300:5)
                                          2019-09-28 00:00:02.128 - error: javascript.0 at listOnTimeout (timers.js:263:5)
                                          2019-09-28 00:00:02.128 - error: javascript.0 at Timer.processTimers (timers.js:223:10)
                                          2019-09-28 00:00:03.112 - info: javascript.0 script.js.Meine_Geräte.VIS-Logs: Start monitoring of the ioBroker log...
                                          

                                          Das sieht ja danach aus dass das Log noch nicht existiert, ist das richtig?
                                          Was müßte wo und wie geändert werden.

                                          Mic 1 Reply Last reply Reply Quote 0
                                          • liv-in-sky
                                            liv-in-sky @Nashra last edited by

                                            @Nashra

                                            ich habe kein slave system - daher wäre es besser jmd mit so einem system könnte dir helfen

                                            • benutzername und passwort sollte kein thema sein - durch das fixer-script hat iobroker alle rechte
                                            • was mich verwundert ist, dass der slave mit seiner javainstanz auf das filesystem des master zugreift ? das log file des slaves liegt doch auch im log verzeichnisses des slaves ? oder ist das anders?
                                            • wenn es nicht klappt, irgendwo müßte doch eine fehlermeldung sein

                                            zeig doch mal, was du im script, welches auf der slave-javascript-instanz läuft, eingetragen hast (LOG_STATE_PATH, LOG_FS_PATH)

                                            ein fehler von mir - das es evtl zum überschreiben irgendwelcher datenpunkte kommen könnte, ist eigentlich falsch - du hast ja verschiedene scripte, die in verschiedenen javascript-instanzen laufen - also habe sie auch verschiedene datenpunkte

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            848
                                            Online

                                            31.7k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

                                            60
                                            617
                                            120658
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo