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

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

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

    This topic has been deleted. Only users with topic management privileges can see it.
    • O
      Oli last edited by

      Hallo zusammen,

      ich habe mal ne blöde Anfängerfrage.

      Was muss ich in die Blacklist eintragen, damit ich folgende Logeinträge nicht mehr angezeigt bekomme?

      8863787f-0fc4-4cad-9d67-ad3e0e92057a-image.png

      Glasfaser 1 Reply Last reply Reply Quote 0
      • Glasfaser
        Glasfaser @Oli last edited by

        @Oli

        blacklist:   ['snmp'],
        
        
        O 1 Reply Last reply Reply Quote 0
        • O
          Oli @Glasfaser last edited by

          @Glasfaser said in [Vorlage] JS: Log-Datei aufbereiten für VIS:

          ['snmp']

          danke für die schnelle Antwort, aber das scheint nicht zu klappen.

          1f59b439-aa31-4729-94c4-7593492dee15-image.png

          be4c261a-d050-41a8-a0cb-ebb8795f22e9-image.png

          Wahrscheinlich sitzt die Schwachstelle wieder vorm PC 🙂

          sigi234 1 Reply Last reply Reply Quote 0
          • sigi234
            sigi234 Forum Testing Most Active @Oli last edited by

            @Oli
            snmp.0

            O 1 Reply Last reply Reply Quote 1
            • O
              Oli @sigi234 last edited by

              @sigi234

              danke, das war es.

              Glasfaser 1 Reply Last reply Reply Quote 0
              • Glasfaser
                Glasfaser @Oli last edited by

                @Oli

                Mein Angabe war für hier zum eintragen , deshalb nur " snmp "

                1.JPG

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

                  @Oli
                  @Glasfaser
                  @sigi234

                  Es geht beides:

                  BLACKLIST_GLOBAL: Hier werden als erstes ALLE Log-Einträge global ausgefiltert.

                  Aber manchmal will man ja nicht global alles ausfiltern.

                  Daher kann man unterhalb von LOG_FILTER dann je nach Kategorie ('hubschrauberlandeplatz', 'error', etc.) noch zusätzlich filtern.

                  Das Beispiel aus dem Screenshot https://forum.iobroker.net/post/321724 kann nicht funktionieren, weil hier eckige Klammern hinzugefügt wurden:
                  '[snmp]'
                  Die Logzeile selbst enthält aber nur snmp.0 ohne eckige Klammern, daher greift der Filter nicht, da es '[snmp]' in der Logzeile selbst nicht gibt.
                  'snmp' ohne eckige Klammern geht natürlich. Besser ist es allerdings, näher zu spezifizieren, also 'snmp.0', damit nicht auch Logzeilen anderer Skripte mit ausgefiltert werden, falls diese in irgend einem Wort den Bestandteil snmp enthalten.

                  Also: besser 'snmp.0' statt 'snmp'. Oder: besser 'wetter.0' statt 'wetter' (Begriff wetter könnte schließlich auch wirklich in anderen Logzeilen enthalten sein).

                  1 Reply Last reply Reply Quote 0
                  • B
                    base last edited by

                    Hallo, bekomme nach Start des Scripts folgende Fehlermeldung:

                    javascript.0	2019-11-13 15:56:54.939	error	(29884) at process._tickCallback (internal/process/next_tick.js:68:7)
                    javascript.0	2019-11-13 15:56:54.939	error	(29884) at promise.then (/opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49)
                    javascript.0	2019-11-13 15:56:54.939	error	(29884) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23)
                    javascript.0	2019-11-13 15:56:54.939	error	(29884) at client.get (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:491:17)
                    javascript.0	2019-11-13 15:56:54.939	error	(29884) at adapter.getForeignState (/opt/iobroker/node_modules/iobroker.javascript/main.js:845:17)
                    javascript.0	2019-11-13 15:56:54.938	error	(29884) at createProblemObject (/opt/iobroker/node_modules/iobroker.javascript/main.js:1254:17)
                    javascript.0	2019-11-13 15:56:54.938	error	(29884) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1201:37)
                    javascript.0	2019-11-13 15:56:54.938	error	(29884) at compile (/opt/iobroker/node_modules/iobroker.javascript/main.js:978:28)
                    javascript.0	2019-11-13 15:56:54.938	error	(29884) at Object.createScript (vm.js:277:10)
                    javascript.0	2019-11-13 15:56:54.938	error	(29884) at new Script (vm.js:83:7)
                    javascript.0	2019-11-13 15:56:54.938	error	(29884) SyntaxError: Unexpected end of input
                    javascript.0	2019-11-13 15:56:54.937	error	(29884)
                    javascript.0	2019-11-13 15:56:54.937	error	(29884) log('registered ' + __engine.__subscriptions + ' subscription' + (__engine.__subscriptions === 1 ? '' : 's' ) + ' and ' + __engine.__schedules + ' schedule' + (__engine.__schedules === 1 ? ''
                    javascript.0	2019-11-13 15:56:54.937	error	at script.js.common.Home.LogfileSrcipt2:1392
                    javascript.0	2019-11-13 15:56:54.937	error	(29884) script.js.common.Home.LogfileSrcipt2 compile failed:
                    

                    was bedeutet das?

                    Glasfaser 1 Reply Last reply Reply Quote 0
                    • Glasfaser
                      Glasfaser @base last edited by

                      @base

                      Zeige mal bitte dein ganzes Skript.
                      Lade es als . txt Datei hier hoch.

                      B 1 Reply Last reply Reply Quote 0
                      • B
                        base @Glasfaser last edited by

                        @Glasfaser logfilescript.txt

                        Glasfaser 1 Reply Last reply Reply Quote 0
                        • Glasfaser
                          Glasfaser @base last edited by Glasfaser

                          @base

                          Hast du beim kopieren unterschlagen .

                          1.JPG

                          Habe es hier verbessert :

                          NEU .txt

                          B 1 Reply Last reply Reply Quote 0
                          • B
                            base @Glasfaser last edited by

                            @Glasfaser

                            oh peinlich. Vielen Dank für den Hinweis👍

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

                              Hallo,
                              erstmal Kompliment, geiles Script, toll Dokumentiert, so viel Mühe. Meinen grössten Respekt.

                              Nun kommt meine Frage: Ich benutze Habpanel und möchte ungerne die VIS einblenden extra dafür, zumal Habpanel so einfach ist.
                              Dafür müsste mir das LOG die Daten nicht als Fließtext ausgeben, sondern es müsste immer einen harten Zeilenumbruch nach jeder Zeile einfügen.

                              Ein Beispiel wie ich eine Statusseite hardcoded eingegeben hatte in das Template-Widget. So müsste also der Syntax aussehen. Am Log-Code selbst hatte ich bisher extra nichts geändert.
                              Geht das irgendwie umzusetzen oder hat jemand irgendeine andere Idee wie ich es sauber in Habpanel einpflege?

                              {{itemValue('deconz.0.Sensors.5.lastupdated')}}<br>
                              {{itemValue('deconz.0.Sensors.6.lastupdated')}}<br>
                              {{itemValue('deconz.0.Sensors.7.lastupdated')}}<br>
                              {{itemValue('deconz.0.Sensors.8.lastupdated')}}<br>
                              

                              VG Sascha

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

                                @Sascha12
                                Vielen Dank für dein Feedback 🙂 !

                                Was du machen kannst:
                                Den entsprechenden Datenpunkt von logJSON, also etwa javascript.0.Log-Script.xxxxx.logJSON, einfach auf Änderung überwachen. Bei Änderung dann auslesen, die Logzeilen neu aufbauen, und dann in einen neuen Datenpunkt ausgeben.
                                Beispiel (kopiert aus einem Script von mir):

                                // State von Logfile-Script, den wir verarbeiten wollen
                                const STATE_LOG = 'javascript.0.Log-Script.logError.logJSON';
                                
                                // Neuer State, der die geparste Ausgabe enthält
                                const STATE_RESULT = 'javascript.0.Test.Testlog'
                                
                                ///////////////////////////////////////////////////////////////////////////////////////////////
                                //////////////////////////// AB HIER NICHTS MEHR ÄNDERN ///////////////////////////////////////
                                ///////////////////////////////////////////////////////////////////////////////////////////////
                                
                                createState(STATE_RESULT, {'name':'Test Log', 'type':'string', 'read':true, 'write':true, 'def':'' });
                                
                                on({id: STATE_LOG, change: 'any'}, function (obj) {
                                    doStuff();
                                });
                                
                                
                                function doStuff() {
                                
                                    let obj;
                                    // https://forum.iobroker.net/topic/6805/mqtt-json-einzelner-datenpunkt-sonoffpow-script/4
                                	try {obj = JSON.parse(getState(STATE_LOG).val);
                                	} catch (e) {
                                        	log('Cannot parse: ' + getState(STATE_LOG).val, 'warn');
                                        	return;
                                 	}
                                
                                    let logStr = '';
                                    for (let lpEntry of obj) {
                                
                                        // hier kannst du beliebig alles anpassen für die Ausgabe        
                                        logStr += lpEntry.date + ' - Level: ' + lpEntry.level + ', Quelle: ' + lpEntry.source + ', Message: ' + lpEntry.msg;
                                
                                    }
                                
                                    setState(STATE_RESULT, logStr);
                                
                                }
                                

                                Bei // hier kannst du beliebig alles anpassen für die Ausgabe kannst du deine Ausgabe individuell konfigurieren.

                                S 1 Reply Last reply Reply Quote 0
                                • S
                                  Sascha12 @Mic last edited by

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

                                  @Sascha12
                                  Vielen Dank für dein Feedback 🙂 !

                                  Was du machen kannst:

                                  Danke Dir. Das muss ich erstmal ansehen. Habe es implementiert und funktioniert wie von Dir angegeben !

                                  Ich glaube aber, dass ich das nicht weiter verfolge, weil das weitere Anpassen über meinen Horizont geht.

                                  Ich müsste ja auch in JS eine Tabelle definieren und in den Code einfügen, weil Habpanel "nur" den reinen Code nimmt im Template-Widget.
                                  VG Sascha

                                  1 Reply Last reply Reply Quote 0
                                  • AlexAtHome
                                    AlexAtHome last edited by

                                    Hi @Mic ,

                                    vielen, vielen Dank für Dein Script!
                                    Ich habe es gerade bei mir auf die aktuellste Version upgedated, und es läuft soweit. Jedoch sagt er mir im Script-Editor folgendes:
                                    In der Function init in Zeile

                                    // Subscribe to log handler
                                            G_LogHandler = onLog('*', data => {
                                                processNewLogLine(data);
                                            });
                                    

                                    Das * wird angemeckert, bei Mouse-Over kommt diese Meldung:

                                    Argument of type '"*"' is not assignable to parameter of type 'LogLevel'.
                                    

                                    Ist das ein Problem?

                                    Vielen Dank + Greets, Alex

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

                                      Hi @AlexAtHome aka Alex,

                                      vielen Dank für dein Feedback 🙂
                                      Die Syntax-Funktion vom JavaScript-Editor mag leider den ziemlich neuen Befehl onLog('*'), also mit Sternchen, noch nicht und kennzeichnet dies als Fehler, während das aber vollständig von ioBroker unterstützt wird.
                                      Siehe https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#onlog
                                      Daher: diese Meldung im JavaScript-Editor kannst du absolut ignorieren, hat keinerlei Auswirkung.
                                      Viel Spaß beim Anwenden des Scripts.

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

                                        @Mic dann bitte GitHub issue beim JavaScript Adapter anlegen. Danke

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

                                          @apollon77
                                          gerne, erledigt: https://github.com/ioBroker/ioBroker.javascript/issues/457

                                          Mic-M created this issue in ioBroker/ioBroker.javascript

                                          closed onLog() with wildcard *: not identified by editor #457

                                          1 Reply Last reply Reply Quote 0
                                          • B
                                            blackeagle998 last edited by

                                            @Mic
                                            Ich habe solange nach einer Überwachungsmöglichkeit für die Logs gesucht und bin nun endlich auf dein wunderbares Skript gestoßen. Herzlichen Dank, dass ihr Entwickler euch solche Mühen macht, gerade auch was Support und Weiterentwicklung betrifft!

                                            Da ich kein VIS oder ähnliches nutze, lasse ich mir Error Meldungen und bestimmte andere Meldungen (eigene Filter und States habe ich bereits angelegt) per Pushover senden.
                                            Im Grunde funktioniert das auch super, allerdings ist die Liste an Error Meldungen sehr lang, da ja die Meldungen der Vortage noch enthalten sind.
                                            Theoretisch könnte ich jeden Tag um 00:01Uhr alles leer machen, aber da gibt es doch bestimmt noch eine elegantere Lösung.

                                            Ich möchte gerne, dass in den Error-State nur die neuen Fehlermeldungen geschrieben werden, alle davor existierenden sind irrelevant. Kannst du mir sagen, an welcher Stelle ich was einbauen / abklemmen müsste, damit das so funktioniert?
                                            Ich habe schon irgendwo was mit "merge" gesehen, da werden die Nachrichten bestimmt zusammengefügt, aber mir fehlt das Detailwissen um da alleine einzugreifen 🙂

                                            In diesem Sinne freue ich mich auf deine Rückmeldung.

                                            Glasfaser Mic 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            557
                                            Online

                                            31.6k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            60
                                            617
                                            112486
                                            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