Debugging in Skripten stoppt plötzlich

Hi,
Ich bemerke in vielen meiner Skripte dass die Debugging Meldungen oft plötzlich ohne merklichen Grund aufhören.
Das sieht dann so aus wie in meinem Screenshot.
Meist sind es Skripte die häufig laufen und relativ viel Output generieren.
Ärgerlich ist, dass man es nicht merkt!

Hab heute was prüfen wollen, und sehe, dass in meinem Beispiel schon am 14.Jänner der letzte Eintrag war obwohl das Skript täglich mehrmals ordnungsgemäß läuft.

Habt ihr das auch?
Muss man da irgendeinen Speicher löschen?

2019-01-23-10_19_21-Home-Center-2.jpg

Hi pblacky,
das habe ich auch festgestellt. Es ist nicht bei allen Skripten, aber je länger die Debug-Ausgabe wird desto häufiger stopt sie. Je mehr Elemente wie Farbe, Schriften, etc. geändert werden, desto eher stopt die Ausgabe.
Wenn Du immer den letzten sauberen Stand haben willst kannst, Kannst Du im Skript vor jedem Durchlauf ein api.delete("/scenes/" …__fibaroSceneId… "/debugMessages") einfügen. Oder wenn das Script es schaftt mehrere Tage die Ausgaben korrekt zu zeigen, kannst Du auch einen Zähler einbauen so das die Ausgabe erst nach n Tagen gesäubert wird.

Vielen Dank für die rasche und hilfreiche Antwort, das habe ich bis jetzt nicht bewußt wahrgenommen!!

Ich fürchte man kann da nicht “alles was älter ist als” löschen, oder ?
Denn wenn nicht dann ändert das einiges in meinem Reporting Ansatz vieler Skripte :wink:

@pblacky

>>Ich fürchte man kann da nicht „alles was älter ist als“ löschen, oder ?

Doch das kann man schon machen, allerdings weiß ich nicht ob ein gestopter Debug dann weiterläuft.
Werde in den nächsten Tagen was dazu coden und hier zur Verfügung stellen.

Danke @jeep, werde es gerne testen, sobald es da ist…

Wenn man Zugriff auf einen Linux Server (oder derartiges) hat kann man relativ simple den Debug output auf syslog umlenken. Dann hat man keinen Stress mehr mit verlorenen Messages oder Logrotation

Hallo @KaiE,
Klingt interessant, hast du da genauere Infos dazu?

@pblacky, @kaie,

selbst wenn das möglich wäre, (ohne root Zugriff auf das HC2 wohl kaum), will das bestimmt keiner. Was nützt uns dass wenn alle mühsam formatierten Reports (HTML), mit einem rudimentären syslog-Protokol wild durcheinader in einen Verzeichnis landen. Dann müsste man dort wieder shell-Scripte erstellen um alles wieder vernünftig lesbar zu machen.
Ich halte das hier für den falschen Ansatz, aber das ist nur meine Meinung. Lasse mich gern vom Gegenteil überzeugen.

Danke @jeep und @kaie
War nur neugierig wie das implementiert wird :wink:
So wie jeep das schildert ist das für mich nicht brauchbar, denn ich will klare und schnell interpretierbare Infos zu den Zuständen in den Skripten bekommen!

Habe jetzt mal in meinen Skripten begonnen unnötige Debug Meldungen zu entfernen und lasse mir die wichtigen Infos per Email schicken, das gefällt mir besser!
Bin schon gespannt was du uns in den nächsten Tagen postest, jeep :wink:

Klar syslog macht Sinn wenn es Deine Umgebung hergibt.

Braucht kein root oder sonstiges hacking… Hier ein Beispiel (Credits…irgendwo im Fibaro Forum gefunden)

HOSTNAME = "TESTservice" 
SYSIP = "10.10.10.10 
DEBUG = 1
SYSLOG = 1 
  
 
function syslogserver(msg) 
    udpsocket = Net.FUdpSocket(); 
    local sendmsg = (HOSTNAME .. ' ' .. msg) 
    udpsocket:write(sendmsg, SYSIP, 514); 
end  
  
  
-- with syslog 
if DEBUG >=1 and SYSLOG == 1 then syslogserver('User closing - Partition') end 
  
-- with fibaro:debug 
if DEBUG >= 2 then fibaro:debug('User closing - Partition') end 

Eigentlich geht es so einfach - allerdings Net.FUdpSocket(); gibt es nur in VDs nicht in Szenen…Grrr

Ansonsten vielleicht ist das was für Dich: https://github.com/dr-boss/hc2-sql-log

Ja, so geht es auch, bleibt aber eine Krücke. Ich habe eher an den Syslogclient im HC2 Linux OS gedacht. Selbst wenn es in Szenen nutzbar wäre, müsste man auf LUA Seite die Ausgaben zum Syslogclient schicken dass der sie an den Syslogserver wo der Daemon läuft schickt. Um das dem Client mitzuteilwn wäre natürlich root notwendig.
Ich habe hier auch ein QNAP NAS und 2 RPis am laufen, aber für das Reporting macht Syslog keinen Sinn. Eigentlich ist Syslog für konzentrierte Fehlermeldungen mehrerer Clients da, nur wird das Fibaro Debug-Fenster (ich würde es Ausgabe Fenster nenen) für Fehler und andere gewollte Ausgaben benutzt.

Aber ich erinnere mich das in früheren Fibaro Versionen die debug Ausgabe sauber funktioniert hat und irgendwann die Ausgabe von vorne begonnen hat, aber nie stehen geblieben ist.
Manche meinen, (darunter auch Fibaro selbst), dass zu viele und häufige Debug-Meldungen das HC2 verlangsamen. Darum mache ich in größeren Scripten das debug abschaltbar und gebe dann alles kompakt auf einmal als HTML aus. Wird vermutlich nur einmal ein I/O Intrerupt notwendig sein.

@pblacky, habe im Fibaro forum noch dieses Script gefunden. Da kann man einstellen das bei überschreiten einer gewissen Größe die Debug-Mesaages gelöscht werden.

Hi @jeep
Habe mir das Skript zum löschen der Debug Messages geholt und mal eingebaut!
Werde es mal 1-2x die Woche über meinen ChronJob starten und sehen, was es bewirkt bzw. anzeigt.
Derzeit habe ich keine Szenen mit mehr wie 40000 Zeilen.