Hallo zusammen,
ich eröffne mal einen Thread zu einer Problematik die mir im Verlauf des Fixing in diesem
Thread aufgefallen ist.
Der konkrete Anlaß war zwar eine Problematik die mir bei der Verarbeitung von Logeinträgen mit Log2Syslog aufgefallen war, aber prinzipiell im Umfeld der Verwendung von SubProcess zu verallgemeinern ist.
Prinzipieller Sachverhalt aus meiner Sicht:
Ein Device eines Loghandlers (notify, Log2Syslog, ....) trägt sich im Hash %logInform ein, um zukünftig durch die sub Log3 über Änderungen im Logfile informiert zu werden und die Daten verarbeiten zu können.
Erfolgt dieser Eintrag jedoch erst nach dem Aufbau eines SubProcesses und einem dementsprechenden fork, fehlt der Eintrag im "geforkten" %logInform und auch der Hash des Loghandler-Devices im SubProcess.
In der Folge werden Log-Ausgaben, die im SubProcess über Log3 geschrieben werden, nicht an den Log-Handler weitergegeben und können durch das Log-Handler Device nicht verarbeitet werden.
Problematisch ist es dann, wenn der SubProcess gleich beim Start eröffnet wird und dann über die Laufzeit von FHEM genutzt und nicht wieder geschlossen wird was meiner Meinung nach der Sinn des Subprozesses ist, d.h. nicht ständiges Öffnen und Schließen.
DbLog arbeitet seit Jahresstart mit einem permanenten SubProcess und forkt auch unmittelbar nach Start von FHEM um nur wenig RAM zu verbrauchen. Andere Module betrifft es möglicherweise ebenfalls bzw. tragen sich vllt. weitere Modulautoren mit dem Gedanken SubProcess an Stelle von BlockingCall für bestimmte Abläufe einzusetzen.
Gesucht ist nun eine Lösung um einem SubProcess die Änderung von %logInform sowie die Hashes der Log-Handler (und deren evtl. Änderungen von DEF und Attributen) zu "spiegeln".
Die Lösung sollte meiner Meinung nach zentral über die fhem.pl verfügbar sein und durch Modulautoren genutzt werden können.
Grüße,
Heiko