NEWS
[Vorlage] JS: Log-Datei aufbereiten für VIS
-
Und noch etwas...
Um 0 Uhr bekomme ich folgenden Error im Log2019-09-28 00:00:02.102 - info: javascript.0 script.js.Meine_Geräte.VIS-Logs: Start new Tail process. File path to current log: [/opt/iobroker/log/iobroker.2019-09-28.log] 2019-09-28 00:00:02.126 - error: javascript.0 Error in callback: Error [ERR_UNHANDLED_ERROR]: Unhandled error. ('watch for /opt/iobroker/log/iobroker.2019-09-28.log failed: Error: ENOENT: no such file or directory, stat \'/opt/iobroker/log/iobroker.2019-09-28.log\'') 2019-09-28 00:00:02.126 - error: javascript.0 at Tail.emit (events.js:187:17) 2019-09-28 00:00:02.127 - error: javascript.0 at Tail.watch (/opt/iobroker/node_modules/iobroker.javascript/node_modules/tail/lib/tail.js:136:12) 2019-09-28 00:00:02.127 - error: javascript.0 at new Tail (/opt/iobroker/node_modules/iobroker.javascript/node_modules/tail/lib/tail.js:87:10) 2019-09-28 00:00:02.128 - error: javascript.0 at Object.startTailingProcess (script.js.Meine_Geräte.VIS-Logs:770:14) 2019-09-28 00:00:02.128 - error: javascript.0 at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1888:34) 2019-09-28 00:00:02.128 - error: javascript.0 at ontimeout (timers.js:438:13) 2019-09-28 00:00:02.128 - error: javascript.0 at tryOnTimeout (timers.js:300:5) 2019-09-28 00:00:02.128 - error: javascript.0 at listOnTimeout (timers.js:263:5) 2019-09-28 00:00:02.128 - error: javascript.0 at Timer.processTimers (timers.js:223:10) 2019-09-28 00:00:03.112 - info: javascript.0 script.js.Meine_Geräte.VIS-Logs: Start monitoring of the ioBroker log...
Das sieht ja danach aus dass das Log noch nicht existiert, ist das richtig?
Was müßte wo und wie geändert werden. -
ich habe kein slave system - daher wäre es besser jmd mit so einem system könnte dir helfen
- benutzername und passwort sollte kein thema sein - durch das fixer-script hat iobroker alle rechte
- was mich verwundert ist, dass der slave mit seiner javainstanz auf das filesystem des master zugreift ? das log file des slaves liegt doch auch im log verzeichnisses des slaves ? oder ist das anders?
- wenn es nicht klappt, irgendwo müßte doch eine fehlermeldung sein
zeig doch mal, was du im script, welches auf der slave-javascript-instanz läuft, eingetragen hast (LOG_STATE_PATH, LOG_FS_PATH)
ein fehler von mir - das es evtl zum überschreiben irgendwelcher datenpunkte kommen könnte, ist eigentlich falsch - du hast ja verschiedene scripte, die in verschiedenen javascript-instanzen laufen - also habe sie auch verschiedene datenpunkte
-
@liv-in-sky
Alles an den Anfang, es läuft. Im Script braucht nur der Pfad zu den
Datenpunkten 'javascript.'+ instance + '.' + 'Log-Script-Slave' geändert werden und,
das wußte ich nicht da immer noch Anfänger, das Script über Edit auf die Instanz setzen
die auf dem Slave läuft
Log vom Slave wird in der Vis angezeigt -
-
@liv-in-sky sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:
Einfach zu kompliziert gedacht, naja, wieder was gelernt.
Jetzt müßte man nur noch den Fehler beim Tageswechsel wegbekommen Error
-
hast du das gemacht ?
* Option 1: Hinzufügen im JavaScript-Adapter: * 1. Im ioBroker links auf "Instanzen" klicken, dort den JS-Adapter wählen, etwa javascript.0 * 2. Unter "Zusätzliche NPM-Module" einfach "tail" (ohne Anführungszeichen) eingeben * 3. Speichern *
-
@liv-in-sky
Ja habe ich alles gemacht, danke für die Info und Hilfe -
@Nashra sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:
Und noch etwas...
Um 0 Uhr bekomme ich folgenden Error im Log2019-09-28 00:00:02.102 - info: javascript.0 script.js.Meine_Geräte.VIS-Logs: Start new Tail process. File path to current log: [/opt/iobroker/log/iobroker.2019-09-28.log] 2019-09-28 00:00:02.126 - error: javascript.0 Error in callback: Error [ERR_UNHANDLED_ERROR]: Unhandled error. ('watch for /opt/iobroker/log/iobroker.2019-09-28.log failed: Error: ENOENT: no such file or directory, stat \'/opt/iobroker/log/iobroker.2019-09-28.log\'') 2019-09-28 00:00:02.126 - error: javascript.0 at Tail.emit (events.js:187:17) 2019-09-28 00:00:02.127 - error: javascript.0 at Tail.watch (/opt/iobroker/node_modules/iobroker.javascript/node_modules/tail/lib/tail.js:136:12) 2019-09-28 00:00:02.127 - error: javascript.0 at new Tail (/opt/iobroker/node_modules/iobroker.javascript/node_modules/tail/lib/tail.js:87:10) 2019-09-28 00:00:02.128 - error: javascript.0 at Object.startTailingProcess (script.js.Meine_Geräte.VIS-Logs:770:14) 2019-09-28 00:00:02.128 - error: javascript.0 at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1888:34) 2019-09-28 00:00:02.128 - error: javascript.0 at ontimeout (timers.js:438:13) 2019-09-28 00:00:02.128 - error: javascript.0 at tryOnTimeout (timers.js:300:5) 2019-09-28 00:00:02.128 - error: javascript.0 at listOnTimeout (timers.js:263:5) 2019-09-28 00:00:02.128 - error: javascript.0 at Timer.processTimers (timers.js:223:10) 2019-09-28 00:00:03.112 - info: javascript.0 script.js.Meine_Geräte.VIS-Logs: Start monitoring of the ioBroker log...
Das sieht ja danach aus dass das Log noch nicht existiert, ist das richtig?
Was müßte wo und wie geändert werden.Das ist seltsam, du bist bislang der erste, der das berichtet. Ich fange das eigentlich mit dem Script ab. D.h. falls für den neuen Tag um 0:00 Uhr noch kein neues Log-File existiert, lasse ich automatisch ein leeres Logfile erzeugen.
function startTailingProcess() { // Path to iobroker log file let strFsFullPath = getCurrentFullFsLogPath(); // Create a new log file. It will created if it is not yet existing. // This will avoid an error if right after midnight the log file is not yet there const fs = require('fs'); if (fs.existsSync(strFsFullPath)) { // File is existing } else { // File is not existing, so we create it. if (LOG_DEBUG) log (DEBUG_IGNORE_STR + 'Log file is not existing, so we need to create a blank file.'); fs.writeFile(strFsFullPath, '', function(err) { if(err) return log(err); }); } // Now start new tailing instance if(LOG_INFO) log('Start new Tail process. File path to current log: [' + strFsFullPath + ']'); G_tail = new G_Tail(strFsFullPath, G_tailOptions); }
Seltsam, dass das nur bei dir auftritt. Kann ich jetzt nicht reproduzieren...
Aber ich habe eine Vermutung, und hab mal in die Runde gefragt: https://forum.iobroker.net/topic/25384/js-wie-erst-nach-file-erstellung-fortsetzen -
@Nashra
Bitte teste mal die neue Version 2.0.2 des Scripts und poste, welcher Log um Mitternacht dann ausgegeben wird.Also einfach Script austauschen, zum Test kannst du einfach alles unterhalb von dieser Zeile ersetzen, an den Einstellungen etc. habe ich nichts geändert:
/************************************************************************************************************************* * Ab hier nichts mehr ändern / Stop editing here! *************************************************************************************************************************/
-
@Mic sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:
@Nashra
Bitte teste mal die neue Version 2.0.2 des Scripts und poste, welcher Log um Mitternacht dann ausgegeben wird.Also einfach Script austauschen, zum Test kannst du einfach alles unterhalb von dieser Zeile ersetzen, an den Einstellungen etc. habe ich nichts geändert:
/************************************************************************************************************************* * Ab hier nichts mehr ändern / Stop editing here! *************************************************************************************************************************/
Script ausgetauscht mal sehen was er um Mitternacht anzeigt, werde morgen berichten.
-
Moin @Mic
das Log von heute Morgen2019-10-02 00:00:00.079 - error: javascript.0 script.js.Meine_Geräte.VIS-Logs: monitorLogChanges not executed as starting new Tailing Process was not successful 2019-10-02 00:00:00.122 - 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-02.log]
-
@Nashra
Danke fürs testen und berichten. Waren da nur diese 2 Zeilen im Log oder noch mehr?Was kommt als Ausgabe, wenn du in der Konsole folgendes eingibst:
stat -c %a /opt/iobroker/log
Bitte teste auch mal folgenden Code in einem neuen Script.
const FILE_TO_TEST = '/opt/iobroker/log/testdatei_01.txt'; const fs = require('fs'); fs.writeFile(FILE_TO_TEST, '', function(err) { if (err) { log('The file [' + FILE_TO_TEST + '] could not be created.', 'error'); log('fs.writeFile Error: ' + err, 'error'); } else { log('File [' + FILE_TO_TEST + '] created.'); } });
Damit testen wir, ob du generell die Rechte hast, im Log-Verzeichnis die Datei
testdatei_01.txt
anzulegen. -
@Mic sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:
@Nashra
Danke fürs testen und berichten. Waren da nur diese 2 Zeilen im Log oder noch mehr?Nein, nur die zwei Zeilen
Was kommt als Ausgabe, wenn du in der Konsole folgendes eingibst:
stat -c %a /opt/iobroker/log
Es kommt 777
Bitte teste auch mal folgenden Code in einem neuen Script.
Log-Ausgabe
javascript.0 2019-10-02 20:07:53.458 info script.js.Meine_Geräte.TEST: File [/opt/iobroker/log/testdatei_01.txt] created. javascript.0 2019-10-02 20:07:53.445 info script.js.Meine_Geräte.TEST: registered 0 subscriptions and 0 schedules javascript.0 2019-10-02 20:07:53.396 info Start javascript script.js.Meine_Geräte.TEST
wird also angelegt
-
Wieder mal Danke für den tollen Skript @Mic. Aber hätte mal ne echt blöde Frage.... Wie kann man denn den Inhalt vom LOG Viewer per Telegram verschicken? Wenn man den Wert von log oder logJSON in einen Telegram Textbaustein einfügt kommt nix an. Getriggert hätte ich jetzt auf logJSONcount.... Antwort in Blockly wär nett
-
@Stormbringer wenn ich es richtig verstanden habe, möchtest du die log Datei per Telegram verschicken?
mal probiert ob es über den Schraubenschlüssel...Settings telegram...funktioniert -
@crunchip
ne habe ich noch nicht, wollte es eigentlich ohne benachrichtigung haben... kann man da ja nicht einstellen oder? ist das ûbertragungsprinzip darüber ein anderes wie über den blockly sendto block? -
@Stormbringer achso, ich dachte du möchtest ne Meldung, wenn z.b. ein Eintrag im log erfolgt.
-
@crunchip ja aber eine stille ohne gebimmel
-
@Stormbringer ich lass bei mir eh nix bimmeln
hab mir z.b. ne 2te telegram instanz gemacht...in dem Fall nur für Bilder..
und diese könnte man ja dann lautlos stellen....nur so ne Idee -
@crunchip hab ich auch aber für unwichtige sachen. die erscheinen dann auch nicht am homescreen und das soll lautlos am homescreen erscheinen