NEWS
Gelöst: LOG Auslesen
-
Hallo ich habe in letzter Zeit öfter mal das Problem, das Tahoma nicht klappt, es liegt offenbar am Server von Tahoma.
Der Log sieht dann so aus:tahoma.0 2022-03-03 19:09:23.834 warn (20272) error during tahomalink request: ->401 retry login tahoma.0 2022-03-03 19:09:23.689 info (20272) Login attempt #2 tahoma.0 2022-03-03 19:08:53.675 warn (20272) error during tahomalink request: ->401 retry login tahoma.0 2022-03-03 19:08:53.519 info (20272) Login attempt #1 tahoma.0 2022-03-03 19:08:23.509 warn (20272) error during tahomalink request: ->401 retry login tahoma.0 2022-03-03 19:08:23.359 info (20272) Executing Timeout (retry login). tahoma.0 2022-03-03 19:06:23.353 info (20272) Login failed 3 times, waiting 120 seconds before retrying. tahoma.0 2022-03-03 19:06:23.352 warn (20272) error during tahomalink request: ->401 retry login tahoma.0 2022-03-03 19:06:23.247 info (20272) Login attempt #3 tahoma.0 2022-03-03 19:05:53.246 warn (20272) error during tahomalink request: ->401 retry login tahoma.0 2022-03-03 19:05:53.147 info (20272) Login attempt #2 tahoma.0 2022-03-03 19:05:23.133 warn (20272) error during tahomalink request: ->401 retry login tahoma.0 2022-03-03 19:05:23.018 info (20272) Login attempt #1 tahoma.0 2022-03-03 19:04:53.006 warn (20272) error during tahomalink request: ->401 retry login tahoma.0 2022-03-03 19:04:52.897 info (20272) Executing Timeout (retry login).
Wie kann ich diesen Log auswerten, als Fehlermeldung im VIS?
Gruß
Michael -
@michihorn Kommt auf Deine Logikmaschine an. Was verwendest Du?
Letztlich musst halt diese Datei auslesen: /opt/iobroker/log/iobroker.current.log
-
@mickym Ich arbeite mit Javascript
-
@michihorn Na wie gesagt - dann die current log Datei auslesen und auswerten.
-
Schau mal, mit dem folgenden Skript gehe ich das gleiche Problem an. Es erkennt Tahoma-Fehler, benachrichtigt mich und stoppt den Adapter für 10 Min., bevor er diesen wieder startet. Vielleicht hilft dir das ja.
//Skript startet Tahoma-Adapter bei Warnungen im Log neu var warten = 10; //Wartezeit bis zum Restart var warten_ms = warten*60000; //Wartezeit bis zum Restart in ms var warten_buf =warten_ms+120000; var sleep = false; onLog('warn', data => { //var text = data.message; // telegram (text); //sendTo('telegram.0', {user: 'UserName', text: data.message}); //console.log('Following was sent to telegram: ' + data.message); var check = data.message.includes("401 retry login"); if (check==true && sleep==false) { sleep=true; var text = "Tahoma Fehler identifiziert. Adapter wird gestoppt und in "+ warten + " Minuten wieder aktiviert"; telegram (text); setState("system.adapter.tahoma.0.alive", false); setTimeout(function() { setState("system.adapter.tahoma.0.alive", true); var text = "Tahoma Adapter wieder gestartet"; telegram (text); }, warten_ms); setTimeout(function() { sleep=false; var text = "Adapterüberwachung wieder aktiv"; telegram (text); }, warten_buf); } }); /* //Skript schickt Error Logs an Telegram var text = ""; var old_text = ""; onLog('error', data => { old_text = text; var text = data.message; if (old_text!=text) { telegram (text); } }); */
-
@gammler2003 Hallo
wie/Wo nimmst Du in dem Script den Bezug auf die LOG Datei?
Wo wird "warn" definiert?onLog('warn', data => {
Vielleicht habe ich etwas übersehen
Michael -
@michihorn Das ist eine fest definierte Funktion (nicht sicher ob man das so nennt).
Sinngemäß: Wenn eine neue Meldung im Log vom Typ "warn" erscheint, dann prüfe, ob der String "401 retry login" (siehe Zeile 14) in der Meldung enthalten ist und führe dann nachfolgende Aktionen aus...
-
@michihorn Alternative wäre der Logparser Adapter.
-
@gammler2003 Danke klappt auch...