NEWS
[Vorlage] JS: Log-Datei aufbereiten für VIS
-
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. -
Vielen Dank für Euer Feedback
@Dr-Bakterius sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:
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.
Stimme Dir absolut zu, dass das in einen Adapter sollte. Mich schreckt noch die Einstellungs-Seite des Adapters ab, das wird sehr aufwendig, um verschiedene Filter einfach erstellen zu lassen. Aber kommt früher oder später.
Der Sprung auf die 2.00 hatte viele Änderungen, da blieben auch Änderungen in den Einstellungen leider nicht aus. Aber werde hier zukünftig Änderungen vermeiden, so gut es geht. -
@Nashra sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:
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.Ok, also mit ioBroker als Slave habe ich noch nie gearbeitet.
Grundsätzlich kann man hier halt den Pfad angeben:// Pfad zum Log-Verzeichnis auf dem Server. // Standard-Pfad unter Linux: '/opt/iobroker/log/'. Wenn das bei dir auch so ist, dann einfach belassen. const LOG_FS_PATH = '/opt/iobroker/log/';
Was man da angeben muss, um auf eine andere Maschine zuzugreifen, weiß ich leider nicht, dazu reichen meine Linux-Kenntnisse (noch) nicht. Versuche mal, von der Linux-Shell des Masters z.B. mit dem Editor "nano" eine Datei des Slaves zu öffnen. Geht das überhaupt?
-
@Mic sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:
Was man da angeben muss, um auf eine andere Maschine zuzugreifen, weiß ich leider nicht, dazu reichen meine Linux-Kenntnisse (noch) nicht. Versuche mal, von der Linux-Shell des Masters z.B. mit dem Editor "nano" eine Datei des Slaves zu öffnen. Geht das überhaupt?
Das ist das Problem @Mic , mit Linux kenn ich mich auch nicht aus
-
hab keinen slave daher vermutung:
du hast doch eine javascript instanz auf dem slave installiert - und darin müßte dann das script nochmal laufen und dies sollte auf die lokale platte zugreifen ?
lieg ich damit falsch ?
und natürlich müßtest du dann die datenpunkte im script in einen anderen ordner speichern - sonst überschreiben sie sich - es muss das 2te script vollständig im bezug der datenpunkte geändert sein
-
Das Log des Slaves sollte meines Wissens im Log des Masters enthalten sein.
-
@darkiop, der Slave hat ein eigenes Log
-
Vielen Dank für das coole Skript.
Ich habe es bei mir eingerichtet und in die vis eingebunden.Leider bekomme ich die Spaltenbreite noch nicht angepasst.
Wie mache ich das? -
@aleks-83 sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:
Vielen Dank für das coole Skript.
Ich habe es bei mir eingerichtet und in die vis eingebunden.Leider bekomme ich die Spaltenbreite noch nicht angepasst.
Hi Aleks,
geht zum einen über CSS, als auch über das Widget "basic - table". Hast du mal danach hier im Forum gesucht? Über das Widget einzustellen wurde etwa hier kurz beschrieben: https://forum.iobroker.net/post/293422 -
Perfekt, Danke !
Man braucht also nur in dem Widget die KollumnAnzahl angeben und schon erscheinen Eingabefelder für einzelnen Breiten.
-
@liv-in-sky sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:
hab keinen slave daher vermutung:
du hast doch eine javascript instanz auf dem slave installiert - und darin müßte dann das script nochmal laufen und dies sollte auf die lokale platte zugreifen ?
lieg ich damit falsch ?
Nein, genau dies versuche ich. Problem ist die Pfadangabe im Script für den Slave da es sonst auf das Log des Master zugreift. Habe den Pfad auch angegeben aber es klappt nicht, schätze das hier Benutzername und Passwort mit
eingegeben werden müßen. Nur wie mache ich das?und natürlich müßtest du dann die datenpunkte im script in einen anderen ordner speichern - sonst überschreiben sie sich - es muss das 2te script vollständig im bezug der datenpunkte geändert sein
Dies war kein Problem, einfach Log-Scripte-Slave eingetragen mit der entsprechenden Javainstanz.
-
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