Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [Vorlage] JS: Log-Datei aufbereiten für VIS

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.6k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.1k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.9k

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

Geplant Angeheftet Gesperrt Verschoben JavaScript
617 Beiträge 60 Kommentatoren 154.2k Aufrufe 49 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • crunchipC crunchip

    @Mic bevor ichs skript starte.... muss die Ordnerstruktur vorher gelöscht werden im Objektbaum?

    MicM Offline
    MicM Offline
    Mic
    Developer
    schrieb am zuletzt editiert von
    #202

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

    @Mic bevor ichs skript starte.... muss die Ordnerstruktur vorher gelöscht werden im Objektbaum?

    Sollte tatsächlich auch ohne Löschung gehen, kannst du mal ohne Löschen probieren, und bei Problemen bitte Script stoppen, löschen, und dann starten.

    crunchipC 1 Antwort Letzte Antwort
    0
    • MicM Mic

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

      @Mic bevor ichs skript starte.... muss die Ordnerstruktur vorher gelöscht werden im Objektbaum?

      Sollte tatsächlich auch ohne Löschung gehen, kannst du mal ohne Löschen probieren, und bei Problemen bitte Script stoppen, löschen, und dann starten.

      crunchipC Abwesend
      crunchipC Abwesend
      crunchip
      Forum Testing Most Active
      schrieb am zuletzt editiert von
      #203

      @Mic ok, ich teste

      umgestiegen von Proxmox auf Unraid

      1 Antwort Letzte Antwort
      1
      • D darkiop

        Habs bei mir am Laufen, sieht gut aus!

        Vielleicht noch was für zukünftige Releases:

        Ein Schalter für das Ein-/Ausschalten der PID im Log:

        fbad2b99-bdf9-4647-9ac0-4202b1423355-grafik.png

        MicM Offline
        MicM Offline
        Mic
        Developer
        schrieb am zuletzt editiert von
        #204

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

        Vielleicht noch was für zukünftige Releases:
        Ein Schalter für das Ein-/Ausschalten der PID im Log:

        Danke fürs Testen! Sehr guter Hinweis, hab ich schon auf dem Schirm :-)

        1 Antwort Letzte Antwort
        0
        • MicM Offline
          MicM Offline
          Mic
          Developer
          schrieb am zuletzt editiert von
          #205

          Notiz an mich: PID ausschalten, würde so gehen:

          // 2. Newer JavaScript adapter (version 4.3+) adds a 5(?) digit number inside brackets to the beginning of the message. We remove it here.
              // We cover 3-6 digits, just in case.
              let regexJsId = /^\([0-9]{3,6}\)\s/
              mMessage = mMessage.replace(regexJsId, '');
          

          Muss mal sehen, welche Anzahl an Stellen hier möglich sind, um das sauber einzubauen.

          1 Antwort Letzte Antwort
          0
          • D Online
            D Online
            darkiop
            Most Active
            schrieb am zuletzt editiert von
            #206

            Die Funktion gab es aber mit dem neuen js-controller 2.0 :)

            Proxmox-ioBroker-Redis-HA Doku: https://forum.iobroker.net/topic/47478/dokumentation-einer-proxmox-iobroker-redis-ha-umgebung

            1 Antwort Letzte Antwort
            0
            • crunchipC Abwesend
              crunchipC Abwesend
              crunchip
              Forum Testing Most Active
              schrieb am zuletzt editiert von
              #207

              @Mic kein Fehler, musste nichts löschen
              läuft und Anzeige wie bei Version zu vor
              hatte ja auch da keine Probleme

              umgestiegen von Proxmox auf Unraid

              1 Antwort Letzte Antwort
              0
              • MicM Offline
                MicM Offline
                Mic
                Developer
                schrieb am zuletzt editiert von
                #208

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

                Die Funktion gab es aber mit dem neuen js-controller 2.0 :)

                Interessant, ich hatte beide quasi zeitgleich aktualisiert, daher blicke ich gar nicht mehr, was für die Änderungen sorgte :-) Danke für die Info.

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

                @Mic kein Fehler, musste nichts löschen
                läuft und Anzeige wie bei Version zu vor
                hatte ja auch da keine Probleme

                Super, danke für dein Feedback.

                Dann lassen wir das mal so laufen. Mitternacht sollte auch kein Problem mehr bei den Usern sein, da dies jetzt von ioBroker übernommen wird und ich muss keine neue Datei mehr durch das Script erzeugen lassen.

                D 1 Antwort Letzte Antwort
                1
                • MicM Mic

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

                  Die Funktion gab es aber mit dem neuen js-controller 2.0 :)

                  Interessant, ich hatte beide quasi zeitgleich aktualisiert, daher blicke ich gar nicht mehr, was für die Änderungen sorgte :-) Danke für die Info.

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

                  @Mic kein Fehler, musste nichts löschen
                  läuft und Anzeige wie bei Version zu vor
                  hatte ja auch da keine Probleme

                  Super, danke für dein Feedback.

                  Dann lassen wir das mal so laufen. Mitternacht sollte auch kein Problem mehr bei den Usern sein, da dies jetzt von ioBroker übernommen wird und ich muss keine neue Datei mehr durch das Script erzeugen lassen.

                  D Online
                  D Online
                  darkiop
                  Most Active
                  schrieb am zuletzt editiert von
                  #209

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

                  Interessant, ich hatte beide quasi zeitgleich aktualisiert, daher blicke ich gar nicht mehr, was für die Änderungen sorgte Danke für die Info.

                  Weis das auch nur weil ich Ingo fragte - war die ganze Zeit am Testen des 2.0 und irgendwann ist mir das (PID) aufgefallen :D JavaScript Adapter kam erst später dran.

                  Proxmox-ioBroker-Redis-HA Doku: https://forum.iobroker.net/topic/47478/dokumentation-einer-proxmox-iobroker-redis-ha-umgebung

                  1 Antwort Letzte Antwort
                  1
                  • MicM Offline
                    MicM Offline
                    Mic
                    Developer
                    schrieb am zuletzt editiert von
                    #210

                    Neue Version 3.1

                    Da die Tests erfolgreich waren, habe ich nun das Script der Version 3.0 Alpha in eine "Stable Version" gehievt.

                    Dazu kommt eine neue Option REMOVE_PID:

                    // Der js-Controller Version 2.0 oder größer fügt Logs teils vorne die PID in Klammern hinzu, 
                    // also z.B. "(12234) Terminated (15): Without reason". 
                    // Mit dieser Option lassen sich die PIDs aus den Logzeilen entfernen.
                    const REMOVE_PID = true;
                    

                    Download: Script Version 3.1

                    WICHTIG: Ihr müsst die JavaScript-Adapter-Version 4.3.0 oder höher nutzen (im Latest verfügbar).

                    Für die eiligen Umsteiger von Version 2.0.2 oder 3.0 Alpha:

                    1. Alles unterhalb von "Ab hier nichts mehr ändern / Stop editing here!" ersetzen.
                    2. Folgende Zeile oben hinzufügen, in Zeile 1 des Scripts: const REMOVE_PID = true;
                    3. Bestehende Datenpunkte müsst ihr nicht löschen.

                    Für die geduldigen Umsteiger von Version 2.0.2 oder 3.0 Alpha:
                    Ich empfehle, dass ihr frisch startet und nur die jeweiligen Optionen aktualisiert. Damit habt ihr auch die ganze Historie des Scripts etc. sowie die Erklärungen aktuell. Dauert wohl nicht länger als 3-4 Minuten.

                    joergeliJ 2 Antworten Letzte Antwort
                    0
                    • R ralalla

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

                      Seit zwei, drei Tagen habe ich folgendes Problem. Das Cript läuft, alles ok.
                      Um 23:59 Eintrag im Log das es aktualisert hat und dann steht im neuen Log

                      2019-10-08 00:00:00.121 - error: javascript.0 script.js.Meine_Geräte.VIS-Logs: monitorLogChanges not executed as starting new Tailing Process was not successful
                      2019-10-08 00:00:00.130 - info: javascript.0 script.js.Meine_Geräte.VIS-Logs: Start new Tail process. File path to current log: [/opt/iobroker/log/iobroker.2019-10-08.log]
                      

                      und dann ist Schluß d.h. das Script wird nicht mehr ausgeführt und in VIS tut sich auch nichts mehr mit
                      neuen Einträgen. Erst wenn ich es neu starte kommen wieder Daten in VIS.
                      Irgendwie stehe ich auf dem Schlauch bzw. kann mir nicht erklären woran dies liegen könnte.
                      Hat das vllt hier auch schon mal jemand gehabt.

                      Habe das selbe Problem. Bis zum Tageswechsel läuft alles, danach muss man das Script anhalten und neu starten damit es läuft.

                      Ebenso bekomme ich es nicht hin das ganze "schön" in einer Tabelle anzeigen zu lassen. Kann noch mal jemand ein paar Infos dazu geben wie das am besten gemacht wird ?

                      B Offline
                      B Offline
                      Bluelightcrew
                      schrieb am zuletzt editiert von
                      #211

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

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

                      Seit zwei, drei Tagen habe ich folgendes Problem. Das Cript läuft, alles ok.
                      Um 23:59 Eintrag im Log das es aktualisert hat und dann steht im neuen Log

                      2019-10-08 00:00:00.121 - error: javascript.0 script.js.Meine_Geräte.VIS-Logs: monitorLogChanges not executed as starting new Tailing Process was not successful
                      2019-10-08 00:00:00.130 - info: javascript.0 script.js.Meine_Geräte.VIS-Logs: Start new Tail process. File path to current log: [/opt/iobroker/log/iobroker.2019-10-08.log]
                      

                      und dann ist Schluß d.h. das Script wird nicht mehr ausgeführt und in VIS tut sich auch nichts mehr mit
                      neuen Einträgen. Erst wenn ich es neu starte kommen wieder Daten in VIS.
                      Irgendwie stehe ich auf dem Schlauch bzw. kann mir nicht erklären woran dies liegen könnte.
                      Hat das vllt hier auch schon mal jemand gehabt.

                      Habe das selbe Problem. Bis zum Tageswechsel läuft alles, danach muss man das Script anhalten und neu starten damit es läuft.

                      Ebenso bekomme ich es nicht hin das ganze "schön" in einer Tabelle anzeigen zu lassen. Kann noch mal jemand ein paar Infos dazu geben wie das am besten gemacht wird ?

                      Hab das selbe Problem.

                      NashraN 1 Antwort Letzte Antwort
                      0
                      • B Bluelightcrew

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

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

                        Seit zwei, drei Tagen habe ich folgendes Problem. Das Cript läuft, alles ok.
                        Um 23:59 Eintrag im Log das es aktualisert hat und dann steht im neuen Log

                        2019-10-08 00:00:00.121 - error: javascript.0 script.js.Meine_Geräte.VIS-Logs: monitorLogChanges not executed as starting new Tailing Process was not successful
                        2019-10-08 00:00:00.130 - info: javascript.0 script.js.Meine_Geräte.VIS-Logs: Start new Tail process. File path to current log: [/opt/iobroker/log/iobroker.2019-10-08.log]
                        

                        und dann ist Schluß d.h. das Script wird nicht mehr ausgeführt und in VIS tut sich auch nichts mehr mit
                        neuen Einträgen. Erst wenn ich es neu starte kommen wieder Daten in VIS.
                        Irgendwie stehe ich auf dem Schlauch bzw. kann mir nicht erklären woran dies liegen könnte.
                        Hat das vllt hier auch schon mal jemand gehabt.

                        Habe das selbe Problem. Bis zum Tageswechsel läuft alles, danach muss man das Script anhalten und neu starten damit es läuft.

                        Ebenso bekomme ich es nicht hin das ganze "schön" in einer Tabelle anzeigen zu lassen. Kann noch mal jemand ein paar Infos dazu geben wie das am besten gemacht wird ?

                        Hab das selbe Problem.

                        NashraN Offline
                        NashraN Offline
                        Nashra
                        Most Active Forum Testing
                        schrieb am zuletzt editiert von Nashra
                        #212

                        @Bluelightcrew neue Version nutzen, dann läufts durch

                        Gruß Ralf
                        Mir egal, wer Dein Vater ist! Wenn ich hier angel, wird nicht übers Wasser gelaufen!!

                        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                        B 1 Antwort Letzte Antwort
                        0
                        • NashraN Nashra

                          @Bluelightcrew neue Version nutzen, dann läufts durch

                          B Offline
                          B Offline
                          Bluelightcrew
                          schrieb am zuletzt editiert von
                          #213

                          @Nashra
                          Problem ist das mein Js Adapter 4.1.12 ist ,da ich stable nutze.

                          1 Antwort Letzte Antwort
                          0
                          • MicM Offline
                            MicM Offline
                            Mic
                            Developer
                            schrieb am zuletzt editiert von
                            #214

                            @Bluelightcrew
                            Dann entweder warten, bis dieser im Stable ist, oder alternativ den Latest installieren.

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

                            Ebenso bekomme ich es nicht hin das ganze "schön" in einer Tabelle anzeigen zu lassen. Kann noch mal jemand ein paar Infos dazu geben wie das am besten gemacht wird ?

                            Siehe etwa hier: https://forum.iobroker.net/post/303374

                            1 Antwort Letzte Antwort
                            0
                            • kmxakK Offline
                              kmxakK Offline
                              kmxak
                              Most Active
                              schrieb am zuletzt editiert von
                              #215

                              Nabend,

                              wäre es möglich Telegram einzubauen?

                              Ich würde gerne alle richtigen Error Meldungen per Telegram haben.
                              Das ganze soll immer nur einmal geschickt werden (neueste oder aktueller Error) und keine komplette Liste mit allen Error Meldungen.
                              (bzw. wenn es ein Error ist der mehrere Zeilen schreibt dann halt dann doch mehrere)
                              ioBroker ist ja inzwischen so stabil am laufen das zumindest bei mir nur noch Error Meldungen kommen wenn was nicht stimmt.

                              Optional wäre es auch total klasse wenn man das, wie du es ja bereits eingebaut hast, auch für normale Logs/Adapter machen könnte falls man mal einen Adapter überwachen möchte.

                              Ist so etwas zu realisieren?

                              Gruß Alex

                              MicM 1 Antwort Letzte Antwort
                              0
                              • kmxakK kmxak

                                Nabend,

                                wäre es möglich Telegram einzubauen?

                                Ich würde gerne alle richtigen Error Meldungen per Telegram haben.
                                Das ganze soll immer nur einmal geschickt werden (neueste oder aktueller Error) und keine komplette Liste mit allen Error Meldungen.
                                (bzw. wenn es ein Error ist der mehrere Zeilen schreibt dann halt dann doch mehrere)
                                ioBroker ist ja inzwischen so stabil am laufen das zumindest bei mir nur noch Error Meldungen kommen wenn was nicht stimmt.

                                Optional wäre es auch total klasse wenn man das, wie du es ja bereits eingebaut hast, auch für normale Logs/Adapter machen könnte falls man mal einen Adapter überwachen möchte.

                                Ist so etwas zu realisieren?

                                MicM Offline
                                MicM Offline
                                Mic
                                Developer
                                schrieb am zuletzt editiert von Mic
                                #216

                                @kmxak

                                Hi,

                                geht natürlich, und könnte man auch über ein separates JavaScript lösen.
                                Also gewünschten Datenpunkt auf Änderung überwachen, dann müssen halt verschiedene Vergleiche laufen, bevor tatsächlich eine Meldung abgegeben wird.

                                Was müsste man denn prüfen, um nicht alle paar Sekunden eine Meldung zu erhalten?
                                Ich brauche da euren Input, um verschiedenes abzufangen, wie etwa

                                • Absturz / Endlosschleifen und ioBroker-Log wird vollgemüllt
                                • Begrenzungen (also wie oft)
                                • ...

                                Also in etwa nur senden, falls:

                                • Letzte Log-Eintrag-Meldung ungleich der aktuellen (+ ggf. Zeitunterschied, d.h. wenn alle 12 Stunden derselbe Logeintrag kommt, möchte man das schon wissen, alle 2 Sekunden aber nicht...)
                                • UND Letzter (Telegram-)Befehl vor länger als xxx Sekunden gesendet
                                • UND Falls mehr als xx mal innerhalb von xx Sekunden gesendet wird, dann nicht mehr senden

                                Was wären sonst noch sinnvolle / andere Bedingungen?

                                Am besten du überlegst mal, was hier sinnvoll wäre für den Einsatzzweck und schreibst es hier rein :-)

                                kmxakK 1 Antwort Letzte Antwort
                                0
                                • MicM Mic

                                  Neue Version 3.1

                                  Da die Tests erfolgreich waren, habe ich nun das Script der Version 3.0 Alpha in eine "Stable Version" gehievt.

                                  Dazu kommt eine neue Option REMOVE_PID:

                                  // Der js-Controller Version 2.0 oder größer fügt Logs teils vorne die PID in Klammern hinzu, 
                                  // also z.B. "(12234) Terminated (15): Without reason". 
                                  // Mit dieser Option lassen sich die PIDs aus den Logzeilen entfernen.
                                  const REMOVE_PID = true;
                                  

                                  Download: Script Version 3.1

                                  WICHTIG: Ihr müsst die JavaScript-Adapter-Version 4.3.0 oder höher nutzen (im Latest verfügbar).

                                  Für die eiligen Umsteiger von Version 2.0.2 oder 3.0 Alpha:

                                  1. Alles unterhalb von "Ab hier nichts mehr ändern / Stop editing here!" ersetzen.
                                  2. Folgende Zeile oben hinzufügen, in Zeile 1 des Scripts: const REMOVE_PID = true;
                                  3. Bestehende Datenpunkte müsst ihr nicht löschen.

                                  Für die geduldigen Umsteiger von Version 2.0.2 oder 3.0 Alpha:
                                  Ich empfehle, dass ihr frisch startet und nur die jeweiligen Optionen aktualisiert. Damit habt ihr auch die ganze Historie des Scripts etc. sowie die Erklärungen aktuell. Dauert wohl nicht länger als 3-4 Minuten.

                                  joergeliJ Offline
                                  joergeliJ Offline
                                  joergeli
                                  schrieb am zuletzt editiert von
                                  #217

                                  @Mic
                                  Hallo Mic,
                                  saubere Arbeit ! :+1:

                                  Ich habe auch schon die ältere Version des Scriptes genutzt und hatte ebenfalls das "Mitternachts-Problem".
                                  Habe mir dann (mit meinen rudimentären JavaScript-Kenntnissen) so geholfen, daß ich erstens den Schedule auf jede 45te Sekunde gesetzt habe ( also nicht alle 45 Sek), damit auf jeden Fall immer 15 Sekunden Zeit bis zum "Mitternacht-Wechsel" war:

                                  const STATE_UPDATE_SCHEDULE = '45 * * * * *';   // jede 45te Sekunde
                                  

                                  und zweitens die function init() geforked habe, d.h. die function main() erst 15 Sekunden nach Mitternacht habe ausführen lassen:

                                          // Every midnight at 0:00, we have a new log file. So, we schedule accordingly.
                                          //clearSchedule(G_Schedule_Midnight);
                                          //G_Schedule_Midnight = schedule('0 0 * * *', main);
                                  
                                          //Forked by joergeli: Every midnight at 0:00 + 15 seconds, we have a new log file. So, we schedule accordingly.
                                          clearSchedule(G_Schedule_Midnight);
                                          G_Schedule_Midnight = schedule('15 0 0 * * *', main);
                                  

                                  Damit hatte ich dann das "Mitternachts-Problem nicht mehr.
                                  Aber das gehört wohl jetzt mit Deinem neuen Script der Vergangenheit an.:grinning:

                                  Trotzdem habe ich - für mich persönlich! - auch im neuen Script wieder etwas "herumgepfuscht".
                                  Worum geht's ? Nun, ich wollte gerne, wenn ich das Log manuell lösche (clearJSON), daß das auch im vis optisch angezeigt wird.
                                  Mein Log sieht im vis so aus:
                                  log.jpg
                                  Im vis habe ich mir oben rechts in der Tabelle einen Button (Widget jqui - Button State) eingebaut, der das Log löscht:
                                  log_wurde_geloescht.jpg

                                  Zusätzlich habe ich die function subscribeClearJson() wie folgt geforked;

                                  function subscribeClearJson() {
                                      // Set current date to state if button is pressed
                                      let logSubscribe = '';
                                      for (let i = 0; i < LOG_FILTER.length; i++) {
                                          let lpFilterId = cleanseStatePath(LOG_FILTER[i].id);
                                          let lpStateFirstPart = LOG_STATE_PATH + '.log' + lpFilterId;
                                          logSubscribe += ( (logSubscribe === '') ? '' : ', ') + lpFilterId;
                                          on({id: lpStateFirstPart + '.clearJSON', change: 'any', val: true}, function(obj) {
                                              let stateBtnPth = obj.id // e.g. [javascript.0.Log-Script.logInfo.clearJSON]
                                              let firstPart = stateBtnPth.substring(0, stateBtnPth.length-10); // get first part of obj.id, like "javascript.0.Log-Script.logInfo"
                                              let filterID = firstPart.slice(firstPart.lastIndexOf('.') + 1); // gets the filter id, like "logInfo"
                                              if (LOG_DEBUG) log(DEBUG_IGNORE_STR + 'Clear JSON states for [' + filterID + '].');
                                  
                                  //______Forked by joergeli: Show a notice in vis-Table, that log was deleted __________________________________________________
                                              // We clear the according JSON states      //deactivated
                                              //setState(firstPart + '.logJSON', '[]');  //deactivated
                                              var datum = new Date();
                                              var tag = datum.getDate();
                                              var monat = (datum.getMonth()+ 1);
                                              var jahr = datum.getFullYear();
                                              var stunde = datum.getHours();
                                              var minute = datum.getMinutes();
                                              var sekunde = datum.getSeconds();
                                              if (tag < 10) tag = '0' + tag;
                                              if (monat < 10) monat= '0' + monat;
                                              if (stunde< 10) stunde= '0' + stunde;
                                              if (minute< 10) minute= '0' + minute;
                                              if (sekunde< 10) sekunde= '0' + sekunde;
                                              var loeschdatum = tag + "." + monat+"." + jahr;
                                              var loeschzeit  = stunde +":" + minute +":" + sekunde;
                                              setState(firstPart + '.logJSON', ' [{"date": "" ,"level":"","source":"","msg":"<span class=\'log-deleted\'>&nbsp;&nbsp;Log wurde gelöscht&nbsp;&nbsp;&nbsp;( ' + loeschdatum + ' um ' + loeschzeit + ' Uhr )&nbsp;&nbsp;</span>"}]');    
                                  //____________________________________________________________________________________________________________	
                                      
                                              setState(firstPart + '.logJSONcount', 0);
                                  
                                          });
                                      }
                                      if (LOG_DEBUG) log('Subscribing to Clear JSON Buttons: ' + logSubscribe)
                                  }
                                  

                                  Außerdem habe ich mir noch ein css für die Logging-Tabelle angelegt (Farben, Schriftgröße, Ränder, etc.)
                                  Anschließend das Widget basic-table der entspr. CSS-Klasse logging zugeordnet.

                                  
                                  
                                  .log-info{ color: #0B610B; font-weight: bold; }
                                  .log-warn { color: #ffaa00; font-weight: bold; }
                                  .log-error{ color: red; font-weight: bold;}
                                  .log-deleted{
                                      color: #990000;
                                      background-color: #eeee66;    
                                      font-family:arial;
                                      font-size: 10px; 
                                      font-weight: bold;
                                  }
                                  
                                   .logging{
                                      border-collapse: collapse;
                                      border: 0px solid #6a6a6a;
                                  }
                                  
                                  .logging th{
                                      background-color: #5297ff;
                                      color: #ffffff;
                                      font-size: 11px;
                                      font-weight: bold;
                                      border: none;
                                      height:17px;
                                      border-color:#6a6a6a;
                                      border-bottom-style:solid;
                                      border-width:1px;
                                  }
                                  
                                  /* gerade Zeilen */
                                  .logging-tr:nth-child(even) {
                                      background-color: #DDF5DB;
                                      color: #4a4a4a;
                                      font-size: 11px;
                                  
                                  }
                                  
                                  /* ungerade Zeilen */
                                  .logging-tr:nth-child(odd) {
                                      background-color: #EDFAE8;
                                      color: #4a4a4a;
                                      font-size: 11px;
                                  }
                                  
                                  

                                  Dann wird nach dem manuellen Löschen des Logs in der ersten Zeile der Löschzeitpunkt schön farbig angezeigt.
                                  Natürlich nur so lange, bis das durch einen Log-Eintrag überschrieben wird.
                                  Zugegeben, das ist nur eine optische Spielerei und könnte man scriptmäßig bestimmt eleganter lösen, ist aber evtl. eine Anregung für andere "Spielkinder" :grin:

                                  Hinweis an alle: Bitte nicht in Mic's Script rumbasteln, wenn man nicht genau weiß was man tut!

                                  Also Mic, nochmals Danke für Dein Script

                                  Gruß
                                  Jörg

                                  1 Antwort Letzte Antwort
                                  1
                                  • MicM Mic

                                    Neue Version 3.1

                                    Da die Tests erfolgreich waren, habe ich nun das Script der Version 3.0 Alpha in eine "Stable Version" gehievt.

                                    Dazu kommt eine neue Option REMOVE_PID:

                                    // Der js-Controller Version 2.0 oder größer fügt Logs teils vorne die PID in Klammern hinzu, 
                                    // also z.B. "(12234) Terminated (15): Without reason". 
                                    // Mit dieser Option lassen sich die PIDs aus den Logzeilen entfernen.
                                    const REMOVE_PID = true;
                                    

                                    Download: Script Version 3.1

                                    WICHTIG: Ihr müsst die JavaScript-Adapter-Version 4.3.0 oder höher nutzen (im Latest verfügbar).

                                    Für die eiligen Umsteiger von Version 2.0.2 oder 3.0 Alpha:

                                    1. Alles unterhalb von "Ab hier nichts mehr ändern / Stop editing here!" ersetzen.
                                    2. Folgende Zeile oben hinzufügen, in Zeile 1 des Scripts: const REMOVE_PID = true;
                                    3. Bestehende Datenpunkte müsst ihr nicht löschen.

                                    Für die geduldigen Umsteiger von Version 2.0.2 oder 3.0 Alpha:
                                    Ich empfehle, dass ihr frisch startet und nur die jeweiligen Optionen aktualisiert. Damit habt ihr auch die ganze Historie des Scripts etc. sowie die Erklärungen aktuell. Dauert wohl nicht länger als 3-4 Minuten.

                                    joergeliJ Offline
                                    joergeliJ Offline
                                    joergeli
                                    schrieb am zuletzt editiert von
                                    #218

                                    @Mic
                                    Hallo Mic,
                                    ich noch mal.
                                    Mitternacht ist gerade vorbei und ich habe im Log festgestellt, daß mit dem neuen Script jetzt nur noch die Log-Einträge des aktuellen Tages vorhanden sind.
                                    Beim "alten" Script blieben die Einträge des Vortages erhalten.
                                    Ist das so gewollt, bzw. könnte man das wieder abändern, daß die alten Einträge erhalten bleiben?
                                    Also quasi wie bisher ein "rollierendes" Log ( first in - last out).

                                    Gruß
                                    Jörg

                                    joergeliJ 1 Antwort Letzte Antwort
                                    0
                                    • MicM Mic

                                      @kmxak

                                      Hi,

                                      geht natürlich, und könnte man auch über ein separates JavaScript lösen.
                                      Also gewünschten Datenpunkt auf Änderung überwachen, dann müssen halt verschiedene Vergleiche laufen, bevor tatsächlich eine Meldung abgegeben wird.

                                      Was müsste man denn prüfen, um nicht alle paar Sekunden eine Meldung zu erhalten?
                                      Ich brauche da euren Input, um verschiedenes abzufangen, wie etwa

                                      • Absturz / Endlosschleifen und ioBroker-Log wird vollgemüllt
                                      • Begrenzungen (also wie oft)
                                      • ...

                                      Also in etwa nur senden, falls:

                                      • Letzte Log-Eintrag-Meldung ungleich der aktuellen (+ ggf. Zeitunterschied, d.h. wenn alle 12 Stunden derselbe Logeintrag kommt, möchte man das schon wissen, alle 2 Sekunden aber nicht...)
                                      • UND Letzter (Telegram-)Befehl vor länger als xxx Sekunden gesendet
                                      • UND Falls mehr als xx mal innerhalb von xx Sekunden gesendet wird, dann nicht mehr senden

                                      Was wären sonst noch sinnvolle / andere Bedingungen?

                                      Am besten du überlegst mal, was hier sinnvoll wäre für den Einsatzzweck und schreibst es hier rein :-)

                                      kmxakK Offline
                                      kmxakK Offline
                                      kmxak
                                      Most Active
                                      schrieb am zuletzt editiert von
                                      #219

                                      @Mic

                                      Ja das kommt der Sache schon extrem nahe.
                                      Telegram soll halt auch nicht zugemüllt werden.

                                      Sage mal so.
                                      Error tritt auf. Script wartet kurz ob noch mehr error kommen, wenn ja zusammenführen, wenn nein senden.
                                      Error merken für Zeit x damit nicht nochmal gesendet wird.

                                      Ggf ein Menü einbauen falls man explizit nachfragt kommen mehr Infos. Aktueller Fehler ist seit dem noch 5 mal aufgetreten.

                                      Muss ich mir heute Abend mal genauer Gedanken machen, nur Scripten kann ich so eine Abfrage leider nicht das ist mir noch zu hoch:)

                                      Gruß Alex

                                      1 Antwort Letzte Antwort
                                      0
                                      • joergeliJ joergeli

                                        @Mic
                                        Hallo Mic,
                                        ich noch mal.
                                        Mitternacht ist gerade vorbei und ich habe im Log festgestellt, daß mit dem neuen Script jetzt nur noch die Log-Einträge des aktuellen Tages vorhanden sind.
                                        Beim "alten" Script blieben die Einträge des Vortages erhalten.
                                        Ist das so gewollt, bzw. könnte man das wieder abändern, daß die alten Einträge erhalten bleiben?
                                        Also quasi wie bisher ein "rollierendes" Log ( first in - last out).

                                        Gruß
                                        Jörg

                                        joergeliJ Offline
                                        joergeliJ Offline
                                        joergeli
                                        schrieb am zuletzt editiert von
                                        #220

                                        @joergeli @Mic
                                        Falscher Alarm - Heute sind die Log-Einträge vom Vortag auch nach Mitternacht erhalten geblieben.

                                        Alles gut
                                        Jörg

                                        1 Antwort Letzte Antwort
                                        0
                                        • MicM Mic

                                          Sinn und Zweck dieses Scripts

                                          Der ioBroker loggt alle Aktionen der Adapter und Scripte entsprechend mit, einzusehen in der ioBroker-Administration, linke Seite Menüpunkt "Log".
                                          Dieses Script bietet nun folgendes:

                                          • Log im VIS darstellen: Entsprechend gefiltert, also etwa nur Warnungen und Fehler, nur Ausgaben eines bestimmten Adapters, usw.
                                          • Auf bestimmte Log-Ereignisse reagieren

                                          Dabei nimmt das Script jeden neuen Logeintrag des ioBrokers und wendet entsprechend gesetzte Filter an, um den Eintrag dann in den entsprechenden Datenpunkten dieses Scripts abzulegen.
                                          Es stehen auch JSON-Datenpunkte zur Verfügung, mit diesen kann im vis eine Tabelle ausgegeben werden. Z.B. über das Widget 'basic - Table' oder hier im Beispiel über Widget 'materialdesign - Table' (Material Design Widgets werden dafür benötigt).
                                          logproj.png

                                          Über die Filter kann man auch einzelne Geräte-Logs oder JS/Blockly-Logs ausgeben. Beispiel für ein "Garagentor":
                                          garage.png

                                          Installation / Einrichtung

                                          Hier weiterlesen (Github)...



                                          Ursprünglicher Beitrag von mir vom 18.07.2018:

                                          Hallo,

                                          ich überlege, dass ich per JavaScript die Log-Datei unter "/opt/iobroker/log/iobroker.YYYY-MM-DD.log" z.B. alle paar Sekunden auslese und Warnungen und Fehler in zwei separate Datenpunkte schreibe (Datenpunkt hält dann z.B. die letzten 30 Werte vor). Diese würde ich dann übers vis entsprechend in einer View ausgeben.

                                          Bevor ich das Rad neu erfinde, gibt es schon ein solches Script? Habe nur das hier gefunden: https://forum.iobroker.net/topic/1246/geloest-log-daten-im-vis-anzeigen

                                          Falls das noch keiner erstellt hat (was mich etwas wundern würde, wäre ja praktisch :) - auch weil manche Adapter das Log voll müllen, da könnte man dann noch ausfiltern etc.) dann werde ich da selbst was schreiben und hier zur Verfügung stellen.

                                          Viele Grüße

                                          NegaleinN Offline
                                          NegaleinN Offline
                                          Negalein
                                          Global Moderator
                                          schrieb am zuletzt editiert von
                                          #221

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

                                          Update:
                                          Script siehe hier:

                                          Hi Mic!

                                          Ich habe gerade dein aktuelles Script für mich angepasst und beim Start hagelt es leider nur so von Fehlermeldungen.

                                          javascript.0	2019-11-04 17:08:02.012	error	at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)
                                          javascript.0	2019-11-04 17:08:02.012	error	at Socket.Readable.push (_stream_readable.js:223:10)
                                          javascript.0	2019-11-04 17:08:02.012	error	at readableAddChunk (_stream_readable.js:268:11)
                                          javascript.0	2019-11-04 17:08:02.012	error	at addChunk (_stream_readable.js:287:12)
                                          javascript.0	2019-11-04 17:08:02.011	error	at Socket.emit (events.js:198:13)
                                          javascript.0	2019-11-04 17:08:02.011	error	at Socket.realHandler (/opt/iobroker/node_modules/ws/lib/WebSocket.js:825:20)
                                          javascript.0	2019-11-04 17:08:02.011	error	at Receiver.add (/opt/iobroker/node_modules/ws/lib/Receiver.js:103:24)
                                          javascript.0	2019-11-04 17:08:02.011	error	at Receiver.expectHandler (/opt/iobroker/node_modules/ws/lib/Receiver.js:499:31)
                                          javascript.0	2019-11-04 17:08:02.011	error	at Receiver.finish (/opt/iobroker/node_modules/ws/lib/Receiver.js:541:12)
                                          javascript.0	2019-11-04 17:08:02.011	error	at Receiver.flush (/opt/iobroker/node_modules/ws/lib/Receiver.js:347:3)
                                          javascript.0	2019-11-04 17:08:02.011	error	at /opt/iobroker/node_modules/ws/lib/Receiver.js:508:14
                                          javascript.0	2019-11-04 17:08:02.011	error	at Receiver.applyExtensions (/opt/iobroker/node_modules/ws/lib/Receiver.js:371:5)
                                          javascript.0	2019-11-04 17:08:02.011	error	at /opt/iobroker/node_modules/ws/lib/Receiver.js:536:18
                                          javascript.0	2019-11-04 17:08:02.011	error	at Receiver.ontext (/opt/iobroker/node_modules/ws/lib/WebSocket.js:841:10)
                                          javascript.0	2019-11-04 17:08:02.011	error	at WebSocket.emit (events.js:198:13)
                                          javascript.0	2019-11-04 17:08:02.011	error	at WebSocket.onMessage (/opt/iobroker/node_modules/ws/lib/WebSocket.js:442:14)
                                          javascript.0	2019-11-04 17:08:02.011	error	at WebSocket.ws.onmessage (/opt/iobroker/node_modules/engine.io-client/lib/transports/websocket.js:146:10)
                                          javascript.0	2019-11-04 17:08:02.011	error	at WS.Transport.onData (/opt/iobroker/node_modules/engine.io-client/lib/transport.js:137:8)
                                          javascript.0	2019-11-04 17:08:02.011	error	at WS.Transport.onPacket (/opt/iobroker/node_modules/engine.io-client/lib/transport.js:145:8)
                                          javascript.0	2019-11-04 17:08:02.011	error	at WS.Emitter.emit (/opt/iobroker/node_modules/engine.io-client/node_modules/component-emitter/index.js:133:20)
                                          javascript.0	2019-11-04 17:08:02.011	error	at WS.<anonymous> (/opt/iobroker/node_modules/engine.io-client/lib/socket.js:268:10)
                                          javascript.0	2019-11-04 17:08:02.011	error	at Socket.onPacket (/opt/iobroker/node_modules/engine.io-client/lib/socket.js:451:14)
                                          javascript.0	2019-11-04 17:08:02.011	error	at Socket.Emitter.emit (/opt/iobroker/node_modules/engine.io-client/node_modules/component-emitter/index.js:133:20)
                                          javascript.0	2019-11-04 17:08:02.011	error	at Socket.<anonymous> (/opt/iobroker/node_modules/component-bind/index.js:21:15)
                                          javascript.0	2019-11-04 17:08:02.011	error	at Manager.ondata (/opt/iobroker/node_modules/socket.io-client/lib/manager.js:322:16)
                                          javascript.0	2019-11-04 17:08:02.011	error	at Decoder.add (/opt/iobroker/node_modules/socket.io-parser/index.js:246:12)
                                          javascript.0	2019-11-04 17:08:02.011	error	at Decoder.Emitter.emit (/opt/iobroker/node_modules/component-emitter/index.js:134:20)
                                          javascript.0	2019-11-04 17:08:02.010	error	at Decoder.<anonymous> (/opt/iobroker/node_modules/component-bind/index.js:21:15)
                                          javascript.0	2019-11-04 17:08:02.010	error	at Manager.ondecoded (/opt/iobroker/node_modules/socket.io-client/lib/manager.js:332:8)
                                          javascript.0	2019-11-04 17:08:02.010	error	at Manager.Emitter.emit (/opt/iobroker/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20)
                                          javascript.0	2019-11-04 17:08:02.010	error	at Manager.<anonymous> (/opt/iobroker/node_modules/component-bind/index.js:21:15)
                                          javascript.0	2019-11-04 17:08:02.010	error	at Socket.onpacket (/opt/iobroker/node_modules/socket.io-client/lib/socket.js:236:12)
                                          javascript.0	2019-11-04 17:08:02.010	error	at Socket.onack (/opt/iobroker/node_modules/socket.io-client/lib/socket.js:312:9)
                                          javascript.0	2019-11-04 17:08:02.010	error	at Socket.adapter.getForeignState (/opt/iobroker/node_modules/iobroker.javascript/main.js:845:17)
                                          javascript.0	2019-11-04 17:08:02.010	error	at createProblemObject (/opt/iobroker/node_modules/iobroker.javascript/main.js:1254:17)
                                          javascript.0	2019-11-04 17:08:02.010	error	at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1201:37)
                                          javascript.0	2019-11-04 17:08:02.010	error	at compile (/opt/iobroker/node_modules/iobroker.javascript/main.js:978:28)
                                          javascript.0	2019-11-04 17:08:02.009	error	at Object.createScript (vm.js:277:10)
                                          javascript.0	2019-11-04 17:08:02.009	error	at new Script (vm.js:83:7)
                                          javascript.0	2019-11-04 17:08:02.009	error	SyntaxError: Unexpected token *
                                          javascript.0	2019-11-04 17:08:02.009	error	^
                                          javascript.0	2019-11-04 17:08:02.007	error	*/
                                          javascript.0	2019-11-04 17:08:02.006	error	at script.js.common.ioBroker_Log:263
                                          javascript.0	2019-11-04 17:08:02.006	error	script.js.common.ioBroker_Log compile failed:
                                          

                                          Könntest du bitte drüberschaun, ob ich irgendwo was falsch konfiguriert habe?

                                          Danke dir!!

                                          ioBroker_Log_für_Vis.txt

                                          ° Node.js: 20.17.0 NPM: 10.8.2
                                          ° Proxmox, Ubuntu 22.04.3 LTS
                                          ° Fixer ---> iob fix

                                          GlasfaserG 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          819

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe