NEWS
Script für Systemmeldungen aus ioBroker (für die Visualisierung)
-
Hallo Zusammen,
da dieser Thread https://forum.iobroker.net/viewtopic.php?f=21&t=1502&start=0 durch den Autor schon auf "gelöst" gesetzt wurde, öffne ich diesen hier.
Ich verwende aus dem Thread folgendes Script:
//***************GLOBALES_SCRIPT********************* createState('log', ''); function getTimeAsString(d) { var date = d || new Date(); return date.getFullYear() + '.' + ('0' + (date.getMonth() + 1)).slice(-2) + '.' + ('0' + date.getDate()).slice(-2) + ' '+ ('0' + date.getHours()).slice(-2) + ':' + ('0' + date.getMinutes()).slice(-2) + ':' + ('0' + date.getSeconds()).slice(-2); } function toLog(text, addTimestamp) { console.log(text); var lines = getState('log').val; lines = lines.split(' '); if (addTimestamp) { lines.unshift(getTimeAsString() + ': ' + text); } else { lines.unshift(text); } if (lines.length > 25) lines.splice(0,1); setState('log', lines.join(' '), true); }
Es funktioniert soweit ohne Probleme, allerdings hab ich dazu einige Fragen und hoffe ihr könnt mir helfen.
1.
Aktuell wird dieser "log" in den Objekten direkt unter "javascript.0" erstellt. Wie muss ich denn das Script abändern, damit dieser in einem "Unterordner" angelegt wird?
2.
Aktuell stopt das "Füllen" des "log" bei einer Zeilenanzahl von 25. Danach kommen keine neuen Einträge mehr dazu.
Ich gehe davon aus, dass diese Zeile dafür verantwortlich ist:
if (lines.length > 25) lines.splice(0,1);
Wenn ich diesen Wert erhöhe, werden auch mehr Einträge geschrieben.
Ist das ein Fehler in dem Script und die Code-Zeile soll eigentlich einen Zeilenumbruch bewirken?
Oder ist das gewollt das nicht mehr als 25 Zeilen geschrieben werden sollen? Was wiederum die Frage aufwirft … gibt es irgendwie ein Problem, wenn man so ein "Object" mit sehr vielen Zeichen/Zeilen füllt?
Gruß ...
-
Bin kein Java Experte aber wegen dem Datenpunkte kannst du mal versuchen bei dem
createState
vor das````
logZ.B.```` system.log ````dann sollte es einen Datenpunkt geben```` javascript.0.system.log
Den gleichen Namen musst du dann an allen Stellen im script ändern wo````
logAlso auch bei set State und getState.
-
Hallo Zusammen,
da dieser Thread https://forum.iobroker.net/viewtopic.php?f=21&t=1502&start=0 durch den Autor schon auf "gelöst" gesetzt wurde, öffne ich diesen hier.
Ich verwende aus dem Thread folgendes Script:
//***************GLOBALES_SCRIPT********************* createState('log', ''); function getTimeAsString(d) { var date = d || new Date(); return date.getFullYear() + '.' + ('0' + (date.getMonth() + 1)).slice(-2) + '.' + ('0' + date.getDate()).slice(-2) + ' '+ ('0' + date.getHours()).slice(-2) + ':' + ('0' + date.getMinutes()).slice(-2) + ':' + ('0' + date.getSeconds()).slice(-2); } function toLog(text, addTimestamp) { console.log(text); var lines = getState('log').val; lines = lines.split(' '); if (addTimestamp) { lines.unshift(getTimeAsString() + ': ' + text); } else { lines.unshift(text); } if (lines.length > 25) lines.splice(0,1); setState('log', lines.join(' '), true); }
Es funktioniert soweit ohne Probleme, allerdings hab ich dazu einige Fragen und hoffe ihr könnt mir helfen.
1.
Aktuell wird dieser "log" in den Objekten direkt unter "javascript.0" erstellt. Wie muss ich denn das Script abändern, damit dieser in einem "Unterordner" angelegt wird?
2.
Aktuell stopt das "Füllen" des "log" bei einer Zeilenanzahl von 25. Danach kommen keine neuen Einträge mehr dazu.
Ich gehe davon aus, dass diese Zeile dafür verantwortlich ist:
if (lines.length > 25) lines.splice(0,1);
Wenn ich diesen Wert erhöhe, werden auch mehr Einträge geschrieben.
Ist das ein Fehler in dem Script und die Code-Zeile soll eigentlich einen Zeilenumbruch bewirken?
Oder ist das gewollt das nicht mehr als 25 Zeilen geschrieben werden sollen? Was wiederum die Frage aufwirft … gibt es irgendwie ein Problem, wenn man so ein "Object" mit sehr vielen Zeichen/Zeilen füllt?
Gruß ... `
Das mit den Zeilen ist so gewollt. Der Zeilenumbruch erfolgt hier:
setState('log', lines.join(' '), true); ````das sorgt dafür. Ob es irgendwann Probleme gibt weiß ich nicht, denke nicht (oder erst ab sehr sehr vielen Zeilen). Die Frage ist wohl, was bringt einem eine sehr lange Liste, da verschwindet die Übersicht und die Wahrscheinlichkeit, dass die Liste so lang ist, weil irrelevantes mitgeloggt wird ist hoch. Aber das liegt ja bei dir. Du kannst es erstmal ohne Probleme höher setzen. Die andere Frage hat wendy korrekt beantwortet.
-
Sorry für die verspätete Rückmeldung. :oops:
Vielen Dank für Antworten.
Ich habe die "Log-Größe" angepasst und das mit dem "Unterordner" funktioniert auch.
Dankeschön
Gruß
-
Hi, ich habe das auch mal übernommen und funktioniert (glaube ich) soweit, aber was mache ich, wenn die 25 Zeilen voll sind? Dann werden ja keine neuen Log's mehr geschrieben. Kann man das so machen, dass die letzte Zeile dann gelöscht wird, wenn eine neue dazu kommt? :?:
Vielen Dank und Grüße
EDIT: Hab die Lösung gefunden
anstatt
if (lines.length > 25) lines.splice(0,1);
pop nutzen
if (lines.length > 25) lines.pop();
die zahl gibt die länge an, ab wann hinten gelöscht wird
-
EDIT: Hab die Lösung gefunden `
Find ich gut, hab ich auch gleich so geändert.(schön das du Lösung teilst!)
Gruß