NEWS
[Vorlage] JS: Log-Datei aufbereiten für VIS
-
@liv-in-sky sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:
habe seltsames verhalten - mein sql server ist aus - also kommen sql fehler und nodered fehler - die nodered fehler sind selbst definiert - sie verschwinden immer im hauptlog (oben)
Hattest Du zufällig vorher alle Datenpunkte gelöscht? Falls nicht, bitte machen und noch mal testen.
-
habe es zweimal getestet (2*datenpunkte gelöscht und restart script)
selbes verhalten - im hauptlog werden immer 2 zusammengefaßte nodered einträge angezeigt und verschwinden wieder (wie im video)
im selbstdef. nodered werden die nachrichten nicht zusammengefaßt - aber mitgeschriebenhabe mal das selbstdef. nodered auskommentiert - selber fehler
-
@liv-in-sky
sieht komisch aus …..da verschwindet noch eine Meldung , muss man schon genau hinsehen im Video !Als würden nur max. 3 Zeilen funktionieren in der Tabelle , ab der vierten springt er , oder täuscht das !
-
@liv-in-sky
Echt seltsam. Kann es leider nicht reproduzieren. Werde ich mir noch mal genauer ansehen.
Ich gehe davon aus, das passiert nicht, wenn DuMERGE_LOGLINES_ACTIVE
auffalse
setzt, richtig? -
@Mic genau - nur mit merge true
ich installiere nochmal ganz neu - datenpunkte löschen und das script nochmal reinkopieren - um auf nummer sicher zu sein - geb dann bescheid
-
also- nochmal alles neu gemacht - datenpunkte gelöscht - script vollständig reinkopiert und keine änderungen gemacht
selber fehler
-
Danke @liv-in-sky
Habe auch gerade noch mal getestet.MERGE_LOGLINES_ACTIVE
auftrue
läuft nicht zuverlässig, nicht alles wird geloggt. Ich werde jetzt das Script v1.5 auf v1.5.1 setzen und die FunktionMERGE_LOGLINES_ACTIVE
auf "experimental", und im Default auffalse
, da sonst alles zu funktionieren scheint.
Also bitte solangeMERGE_LOGLINES_ACTIVE
auffalse
setzen, bis ich das behoben habe. -
@Mic hab jetzt mal einen anderen fehler gemacht erzeugt - internet router aus !
es werden nun mehr sachen angezeigt - ich habe mal nodered deaktiviert und es scheint dieser fehler zu sein, der ärger macht - er zeigz sich auch anders im log - nodered und sql datenbank scheint ein tolles duo zu sein
------------------- node-red.0 2019-08-06 22:55:03.091 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1106:14) node-red.0 2019-08-06 22:55:03.091 error 6 Aug 22:55:03 - [error] [MySQLdatabase:79f00594.84665c] Error: connect ECONNREFUSED 192.168.178.157:3306 ------------------- at Timer.processTimers (timers.js:223:10) ------------------- at listOnTimeout (timers.js:263:5) ------------------- at tryOnTimeout (timers.js:300:5) ------------------- at ontimeout (timers.js:436:11) ------------------- at Timeout.doConnect [as _onTimeout] (/opt/iobroker/iobroker-data/node-red/node_modules/node-red-node-mysql/68-mysql.js:48:23) ------------------- at Pool.getConnection (/opt/iobroker/iobroker-data/node-red/node_modules/mysql/lib/Pool.js:48:16) ------------------- at PoolConnection.connect (/opt/iobroker/iobroker-data/node-red/node_modules/mysql/lib/Connection.js:118:18) ------------------- at Protocol.handshake (/opt/iobroker/iobroker-data/node-red/node_modules/mysql/lib/protocol/Protocol.js:51:23) ------------------- at Protocol._enqueue (/opt/iobroker/iobroker-data/node-red/node_modules/mysql/lib/protocol/Protocol.js:144:48) ------------------- node-red.0 2019-08-06 22:55:03.087 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1106:14) node-red.0 2019-08-06 22:55:03.087 error 6 Aug 22:55:03 - [error] [MySQLdatabase:79f00594.84665c] Error: connect ECONNREFUSED 192.168.178.157:3306 ------------------- at Timer.processTimers (timers.js:223:10) ------------------- at listOnTimeout (timers.js:263:5) ------------------- at tryOnTimeout (timers.js:300:5) ------------------- at ontimeout (timers.js:436:11) ------------------- at Timeout.doConnect [as _onTimeout] (/opt/iobroker/iobroker-data/node-red/node_modules/node-red-node-mysql/68-mysql.js:48:23) ------------------- at Pool.getConnection (/opt/iobroker/iobroker-data/node-red/node_modules/mysql/lib/Pool.js:48:16) ------------------- at PoolConnection.connect (/opt/iobroker/iobroker-data/node-red/node_modules/mysql/lib/Connection.js:118:18) ------------------- at Protocol.handshake (/opt/iobroker/iobroker-data/node-red/node_modules/mysql/lib/protocol/Protocol.js:51:23) ------------------- at Protocol._enqueue (/opt/iobroker/iobroker-data/node-red/node_modules/mysql/lib/protocol/Protocol.js:144:48) -------------------
-
@liv-in-sky cool, danke für deine Hilfe und Feedback, sehr hilfreich! Kann ich mir so näher ansehen zur Analyse. Bis dahin ist jetzt Version 1.5.1 aktiv mit deaktivierter Funktion (als Default).
-
@Mic bin froh, dass du das script nochmal erneuert hast - da hilft man gern !
so sieht es dann aus - und die zeilen bleiben auch stehen - ob alle meldungen aufgeführt sind, kann ich nicht sagen
-
Hallo zusammen,
leider werden auch mit der Version 1.5.1 und MERGE_LOGLINES_ACTIVE auf false viel Logeinträge verschluckt wie bei @liv-in-sky .
Ich habe noch paralell ein altes LogFile Script in der Version 0.8.1 mitlaufen. Hier sind alle Einträge vorhanden.
Es scheint, als werden Einträge verschluckt, die in sehr kurzen Abständen hintereinandern kommen. -
@slonnet
Vielen Dank fürs Testen. Bei "MERGE_LOGLINES_ACTIVE auf false" habe ich die Implementierung von tail in Verdacht. Ich finde in diesem Zusammenhang https://github.com/vladimir-kazan/nodejs-tail sehr interessant zur Implementierung, werde ich mir mal näher ansehen und in eine Testversion implementieren. -
kurz ne dumme frage - läuft das script wenn redis installiert ist ?erledigt - war ein mischmasch der datenpunkte bei der umstellung auf redis
-
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 freuenFreue 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. -
@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
-
@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.
-
Hallo @Mic , vielen vielen Dank für deine Arbeit hier
-
auch von mir ein großes danke - da macht die "fehlererzeugung" beim scripten gleich viel mehr spaß
-
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 -
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.