NEWS
[Vorlage] JS: Log-Datei aufbereiten für VIS
-
Jetzt wird alles angezeigt
-
@Nashra sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:
@Oli @Glasfaser Danke
falsche Widgets in meiner Vis drin gehabt
den Beitrag mit dem Hinweis auf "Last change Timestamp" total überlesenNee … nichts falsch gemacht …
…. habe es dann geändert auf " Timestamp " -
@Mic An dieser Stelle auch mal Danke Hab das Skript zwar in keiner Vis oder sonstiges, lasse mich aber bei Warnungen und Errors jetzt informieren
-
@Glasfaser sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:
@Nashra sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:
@Oli @Glasfaser Danke
falsche Widgets in meiner Vis drin gehabt
den Beitrag mit dem Hinweis auf "Last change Timestamp" total überlesenNee … nichts falsch gemacht …
…. habe es dann geändert auf " Timestamp "Doch, die Vis die ich hatte, da waren in der rechten Anzeige nur Basic-String Widgets
und da gab es auch noch nicht 4 Anzeigen sondern nur 3 (Info, Warn, Error) und
ich hatte die zwei Scripte von @Oli laufen.
Aktuelles Script von @Mic und von dir die Vis, nun läufts -
Update: Script-Version 4.0:
Die Neuerungen:
* ----------------------------------------------------------------------------------------------------------------------- * Change Log: * 4.0 Mic + To allow individual settings per each defined LOG_FILTER, the following global * settings were moved to LOG_FILTER: * * JSON_DATE_FORMAT -> jsonDateFormat * * JSON_LEN -> jsonLogLength * * JSON_NO_ENTRIES -> jsonMaxLines * * JSON_APPLY_CSS_LIMITED_TO_LEVEL -> jsonCssToLevel * * L_SORT_ORDER_DESC -> sortDescending * + Code improvements * + Renamed LOG_NO_OF_ENTRIES to MAX_LOG_LINES * ----------------------------------------------------------------------------------------------------
Das heißt, es wurden diverse globale Einstellungen eliminiert und in die jeweiligen Datenpunkt-Filter-Einstellungen überführt. Damit ist es nun endlich möglich, diese Einstellungen pro Datenpunkt-Filter individuell zu setzen.
Bis Version 3.4:
Ab Version 4.0:
Umstieg von der Version 3.4 oder vorher:
Da diverse Konfigurationen geändert wurden, bitte das komplette Script 4.0 so übernehmen und alle bisherigen Konfigurationen manuell im 4.0er Script neu eintragen. Sorry, aber anders ist das nicht möglich bei diesen wesentlichen Änderungen. -
javascript.0 2020-02-03 23:03:20.004 error (18996) at listOnTimeout (timers.js:263:5) javascript.0 2020-02-03 23:03:20.004 error (18996) at tryOnTimeout (timers.js:300:5) javascript.0 2020-02-03 23:03:20.004 error (18996) at ontimeout (timers.js:436:11) javascript.0 2020-02-03 23:03:20.004 error (18996) at Timeout._onTimeout (C:\Program Files\iobroker\Test\node_modules\iobroker.javascript\node_modules\node-schedule\lib\schedule.js:501:7) javascript.0 2020-02-03 23:03:20.004 error (18996) at C:\Program Files\iobroker\Test\node_modules\iobroker.javascript\node_modules\node-schedule\lib\schedule.js:543:11 javascript.0 2020-02-03 23:03:20.004 error (18996) at Job.invoke (C:\Program Files\iobroker\Test\node_modules\iobroker.javascript\node_modules\node-schedule\lib\schedule.js:173:10) javascript.0 2020-02-03 23:03:20.004 error (18996) at Job.nodeSchedule.scheduleJob [as job] (C:\Program Files\iobroker\Test\node_modules\iobroker.javascript\lib\sandbox.js:1319:34) javascript.0 2020-02-03 23:03:20.004 error (18996) at Object.processNewLogsPerSchedule (script.js.System.Log_Skript1:516:9) javascript.0 2020-02-03 23:03:20.004 error (18996) at processLogArrayAndSetStates (script.js.System.Log_Skript1:727:66) javascript.0 2020-02-03 23:03:20.004 error (18996) at formatLogDateStr (script.js.System.Log_Skript1:792:28) javascript.0 2020-02-03 23:03:20.003 error (18996) Error in callback: TypeError: Cannot read property 'toLowerCase' of undefined javascript.0 2020-02-03 23:03:20.003 info (18996) script.js.System.Log_Skript1: [LOGSCRIPT_IGNORE]New length to be set into state: (290), state: [0_userdata.0.Log-Script.logAll.log] javascript.0 2020-02-03 23:03:20.003 info (18996) script.js.System.Log_Skript1: [LOGSCRIPT_IGNORE]Time of last change of state [0_userdata.0.Log-Script.logAll.clearJSON]: Mon Feb 03 2020 23:03:07 GMT+0100 (GMT+01:00) javascript.0 2020-02-03 23:03:20.002 info (18996) script.js.System.Log_Skript1: [LOGSCRIPT_IGNORE]Filter [homematic]: No match. javascript.0 2020-02-03 23:03:20.002 info (18996) script.js.System.Log_Skript1: [LOGSCRIPT_IGNORE]Filter [warnanderror]: No match. javascript.0 2020-02-03 23:03:20.002 info (18996) script.js.System.Log_Skript1: [LOGSCRIPT_IGNORE]Filter [error]: No match. javascript.0 2020-02-03 23:03:20.002 info (18996) script.js.System.Log_Skript1: [LOGSCRIPT_IGNORE]Filter [info]: Match! New Log Line length: (115) javascript.0 2020-02-03 23:03:20.002 info (18996) script.js.System.Log_Skript1: [LOGSCRIPT_IGNORE]Filter [all]: Match! New Log Line length: (115) javascript.0 2020-02-03 23:03:20.002 info (18996) script.js.System.Log_Skript1: [LOGSCRIPT_IGNORE]Filter [hubschrauberlandeplatz]: No match. javascript.0 2020-02-03 23:03:20.002 info (18996) script.js.System.Log_Skript1: [LOGSCRIPT_IGNORE]Filter [homematic]: No match. javascript.0 2020-02-03 23:03:20.002 info (18996) script.js.System.Log_Skript1: [LOGSCRIPT_IGNORE]Filter [warnanderror]: No match. javascript.0 2020-02-03 23:03:20.002 info (18996) script.js.System.Log_Skript1: [LOGSCRIPT_IGNORE]Filter [error]: No match. javascript.0 2020-02-03 23:03:20.002 info (18996) script.js.System.Log_Skript1: [LOGSCRIPT_IGNORE]Filter [info]: Match! New Log Line length: (176) javascript.0 2020-02-03 23:03:20.002 info (18996) script.js.System.Log_Skript1: [LOGSCRIPT_IGNORE]Filter [all]: Match! New Log Line length: (176) javascript.0 2020-02-03 23:03:20.001 info (18996) script.js.System.Log_Skript1: [LOGSCRIPT_IGNORE]Filter [hubschrauberlandeplatz]: No match. javascript.0 2020-02-03 23:03:07.586 info (18996) script.js.System.Log_Skript1: Start monitoring of the ioBroker log... javascript.0 2020-02-03 23:03:07.585 info (18996) script.js.System.Log_Skript1: Subscribing to Clear JSON Buttons: Hubschrauberlandeplatz, All, Info, Error, Warnanderror, Homematic javascript.0 2020-02-03 23:03:05.875 info (18996) script.js.System.Log_Skript1: registered 0 subscriptions and 0 schedules javascript.0 2020-02-03 23:03:05.844 info (18996) script.js.System.Log_Skript1: createLogStates(): Clean IDs: Hubschrauberlandeplatz; All; Info; Error; Warnanderror; Homematic
-
@sigi234
Bei mir läuft das Out of the box von https://raw.githubusercontent.com/Mic-M/iobroker.logfile-script/master/iobroker_logfile-script.js einwandfrei.
Was hast du denn im Script verändert?
Bitte mal komplettes Script posten, das du oben verwendest. -
@Mic sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:
@sigi234
Bei mir läuft das Out of the box von https://raw.githubusercontent.com/Mic-M/iobroker.logfile-script/master/iobroker_logfile-script.js einwandfrei.
Was hast du denn im Script verändert?
Bitte mal komplettes Script posten, das du oben verwendest. -
@sigi234
So wie es aussieht fehlt bei dir in LOG_FILTER bei "all" die OptionjsonDateFormat
Füge dort das mal hinzu:jsonDateFormat: 'dd.mm. hh:mm',
-
@Mic sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:
@sigi234
So wie es aussieht fehlt bei dir in LOG_FILTER bei "all" die OptionjsonDateFormat
Füge dort das mal hinzu:jsonDateFormat: 'dd.mm. hh:mm',
Jupp, geht jetzt.
-
funktioniert das so, wenn ich nur warn, error und debug möchte?
// /* // { // id: 'hubschrauberlandeplatz', // filter_all: ['hubschr.0'], // filter_any: ['wetterwarnung', 'alarm', 'ufo'], // blacklist: ['0 Bft', '1 Bft', '2 Bft', '3 Bft', '4 Bft'], // clean: ['****', '!!!!', 'ufo gesichtet'], // merge: true, // sortDescending: true, // jsonDateFormat: 'dd.mm. hh:mm', // jsonColumns: ['source','date','msg'], // jsonLogLength: 100, // jsonMaxLines: 10, // jsonCssToLevel: true, // }, // */ // /* // { // id: 'all', // Beispiel "all": hier kommen alle Logeinträge rein, keine Filterung // filter_all: ['', ''], // wird ignoriert, wenn leer // filter_any: ['', ''], // wird ignoriert, wenn leer // blacklist: ['', ''], // wird ignoriert, wenn leer // clean: ['', '', ''], // wird ignoriert, wenn leer // merge: true, // sortDescending: true, // jsonColumns: ['date','level','source','msg'], // Spaltenreihenfolge für JSON (Tabelle in vis) // jsonLogLength: 100, // jsonMaxLines: 10, // jsonCssToLevel: true, // }, // */ // { // id: 'info', // filter_all: [' - info: '], // nur Logeinträge mit Level 'info' // filter_any: ['', ''], // blacklist: ['', ''], // clean: ['', '', ''], // merge: true, // sortDescending: true, // jsonDateFormat: 'dd.mm. hh:mm', // jsonColumns: ['date','level','source','msg'], // jsonLogLength: 100, // jsonMaxLines: 60, // jsonCssToLevel: true, // }, { id: 'debug', filter_all: [' - debug: ', ''], // nur Logeinträge mit Level 'debug' filter_any: [''], blacklist: ['', '', ''], clean: ['', '', ''], merge: true, sortDescending: true, jsonColumns: ['date','level','source','msg'], jsonDateFormat: 'dd.mm. hh:mm', jsonLogLength: 100, jsonMaxLines: 60, jsonCssToLevel: true, }, { id: 'warnanderror', filter_all: ['', ''], filter_any: [' - error: ', ' - warn: '], // nur Logeinträge mit Levels 'warn' und 'error' blacklist: ['', 'no playback content', 'Ignore! Actual secret is '], clean: ['', '', ''], merge: true, sortDescending: true, jsonDateFormat: 'dd.mm. hh:mm', jsonColumns: ['date','level','source','msg'], jsonLogLength: 100, jsonMaxLines: 60, jsonCssToLevel: true, }, // { // // Beispiel, um einen bestimmten Adapter zu überwachen. // // Hier werden alle Fehler und Warnungen des Homematic-Adapters hm-rpc.0 gelistet. // id: 'homematic', // filter_all: ['hm-rpc.0', ''], // hm-rpc.0 muss enthalten sein. // filter_any: [' - error: ', ' - warn: '], // entweder error oder warn // blacklist: ['', '', ''], // clean: ['', '', ''], // merge: true, // sortDescending: true, // jsonDateFormat: 'dd.mm. hh:mm', // jsonColumns: ['date','level','source','msg'], // jsonLogLength: 100, // jsonMaxLines: 60, // jsonCssToLevel: true, // }, ];
-
@Negalein
Bitte nimm die aktualisierte Script-Version 4.0.1. Ich habe dort die ZeilejsonDateFormat: 'dd.mm. hh:mm',
unterhalb von LOG_FILTER, "all", ergänzt.Ansonsten: Auskommentieren in JavaScript geht mit
//
für eine einzelne Zeile und mit/*
und*/
auch für mehrere Zeilen. Der JavaScript-Adapter zeigt das auch schön in grün an, was auskommentiert wurde.Das hier
// log('Test1'); // log('Test2'); // log('Test3');
Ist gleich wie
/* log('Test1'); log('Test2'); log('Test3'); */
Beides kommentiert aus, also wird es nicht ausgeführt.
Kombination geht auch, ist aber unnötig:
/* // log('Test1'); // log('Test2'); // log('Test3'); */
-
@Mic sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:
Ansonsten: Auskommentieren in JavaScript geht mit // für eine einzelne Zeile und mit /* und */ auch für mehrere Zeilen. Der JavaScript-Adapter zeigt das auch schön in grün an, was auskommentiert wurde.
Danke für Erklärung.
Dieser Teil passt dann?
mit{
beginnen und mit},
aufhören?{ id: 'debug', filter_all: [' - debug: ', ''], // nur Logeinträge mit Level 'debug' filter_any: [''], blacklist: ['', '', ''], clean: ['', '', ''], merge: true, sortDescending: true, jsonColumns: ['date','level','source','msg'], jsonDateFormat: 'dd.mm. hh:mm', jsonLogLength: 100, jsonMaxLines: 60, jsonCssToLevel: true, }, { id: 'warnanderror', filter_all: ['', ''], filter_any: [' - error: ', ' - warn: '], // nur Logeinträge mit Levels 'warn' und 'error' blacklist: ['', 'no playback content', 'Ignore! Actual secret is '], clean: ['', '', ''], merge: true, sortDescending: true, jsonDateFormat: 'dd.mm. hh:mm', jsonColumns: ['date','level','source','msg'], jsonLogLength: 100, jsonMaxLines: 60, jsonCssToLevel: true, },
-
@Negalein
Ja, alles gut damit -
Habe das neue Skript 4.01 auf meine Punkte angepasst ,
nur eins ist mit aufgefallen das der Punkt " WarnundError" nur noch einzeln angezeigt wird , also nicht mehr als Liste untereinander
Die Punkte sind unverändert :{ id: 'warnanderror', filter_all: ['', ''], filter_any: [' - error: ', ' - warn: '], // nur Logeinträge mit Levels 'warn' und 'error' blacklist: ['', 'no playback content', 'Ignore! Actual secret is '], clean: ['', '', ''], merge: true, sortDescending: true, jsonDateFormat: 'dd.mm. hh:mm', jsonColumns: ['date','level','source','msg'], jsonLogLength: 100, jsonMaxLines: 60, jsonCssToLevel: true, },
So ist es wenn eine Error Meldung kommt :
und so wenn eine Warnmeldung kommt , dann verschwindet jeweils der andere Eintrag bzw. wechselt .
So ist es mit der 3.4 Version wie es eigentlich sein sollte
. -
@Glasfaser
Danke für dein Testen und Feedback. Seltsam, kann ich leider nicht reproduzieren:- Alle Datenpunkte löschen und frisches Script von Github (Version 4.0.1)
- Noch "Warn" hinzugefügt, dann speichern und Script starten.
- Folgenden Code im JS-Adapter ausführen:
log('Error-Meldung', 'error'); log('Warn-Meldung', 'warn'); // Nochmal nach 2 Sekunden. setTimeout(function() { log('Error-Meldung', 'error'); log('Warn-Meldung', 'warn'); }, 2*1000); // Nach 30 Sekunden noch eine Warnmeldung. setTimeout(function() { log('Neue Warn-Meldung nach 30 Sekunden', 'warn'); }, 30*1000);
- Nun wird angezeigt:
Error:
Warn:
Warnanderror:
Also so, wie es sein soll. Kannst du das bitte auch mal so testen?
-
An alle Benutzer dieses Scripts
Braucht ihr noch weitere Datenpunkte?
Ich habe etwa gesehen, dass ihr manuell Datenpunkte hinzufügt zum Umschalten in VIS. Das könnte ich auch einbauen, also z.B. zusätzlichen Datenpunkt "visCurrentLogId", der dann für ein Auswahl-Widget (Pulldown, etc.) oder für Buttons in VIS dient, um zwischen den einzelnen Logs mittels "Sichtbarkeit" von den Widgets umzuschalten.
Was sonst noch?
-
@Mic sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:
Ich habe etwa gesehen, dass ihr manuell Datenpunkte hinzufügt zum Umschalten in VIS. Das könnte ich auch einbauen
Wäre Cool!
-
@Mic sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:
Braucht ihr noch weitere Datenpunkte?
wennst es erweiterst, ist es ganz nett, aber für mich nicht unbedingt notwendig.
-
@sigi234 sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:
Wäre Cool!
Aber dann wäre es wohl praktischer, dass dann auch automatisch ein Datenpunkt dazu mit ausgewähltem (z.B. "Homematic) JSON gefüllt wird, oder?
Denn soweit ich das in VIS blicke, kann eine Widget-Tabelle nur einen bestimmten Datenpunkt abgreifen. Würde gerne den Umweg über "Sichtbarkeit" und mehrere Tabellen vermeiden in VIS, zur einfacheren Implementierbarkeit/Pflege und vor allem wegen VIS-Performance (1 anstatt 5 Tabellen-Widgets übereinander).
Also wie in diesem Beispiel von @Glasfaser dann nur noch 1 Tabellen-Widget, anstatt 5 (für Warn_Error, Infologs, Warnlogs, Errorlogs, Zustand).