Mir ist heute aufgefallen, dass Filelogs die mit dem disable Attribut (1) deaktiviert sind, trotzdem ein Filehandle haben!?
Ich dachte wenn die abegschaltet werden, dass sie dann auch keine Ressourcen im System (und sei es nur durch offen Filehandles) belegen? Kann ich sie "richtig" deaktivieren? (ausser in der fhem.cfg auszukommentieren?)
Nicht das ich es wuesste.
Hast du dadurch ein konkretes Problem?
Nein aber zum einen nerven mich die 0 Byte Dateien im Logverzeichnis und zum anderen sind es unnötige Ressourcen die im System belegt werden. Ich lasse die Filelog Definition immer zum Debuggen in der DEF um bei evt. Fehlern das Log zu aktivieren!
Ich versuche gerade mein FHEM von fhem.cfg und Logfiles auf configDB und logDB aufzurüsten. Dabei ist mir der Sachverhalt auch aufgefallen. Ich unterstütze P.A.Tricks Vorschlag.
(Ich habe auch keine konkreten Probleme wenn jemand bei Rot über die Strasse geht ;-) )
Das derzeitige Verhalten finde ich völlig in Ordnung und auch für Debugging Zwecke durchaus hilfreich.
Das Attribut "disable" verhindert ja per Definition nicht, dass ein FileLog device (und damit das File im Dateisystem) angelegt werden.
Das Attribut sorgt einfach dafür, dass nichts in das FileLog geschrieben wird.
Das Verhalten ist übrigens in vielen anderen Modulen ebenfalls so umgesetzt.
Der Vorteil des implementierten Verhaltens: man kann das Logging z.B. zum Debugging jederzeit und vorübergehend deaktivieren und dann auch wieder reaktivieren, ohne dass es eines FHEM Neustarts bedarf. Hilfreich ist das Ganze in solchen Fällen, in denen irgendein device (oder Modul) durchdreht und das FileLog flutet. Für die Fehlersuche kann es dann durchaus helfen, das Schreiben in die Datei einfach unterbinden zu können.
Wer überhaupt nicht in das Log schreiben will, soll das device erst gar nicht anlegen. Und wenn man ein Logfile für Debugginzwecke dann doch braucht, ist es ja in weniger als 10 Sekunden per define angelegt.
Aus diesen Gründen würde ich es begrüßen, wenn das Verhalten so bleibt, wie es derzeit ist.
Zitat von: betateilchen am 06 September 2020, 19:28:41
Das Attribut sorgt einfach dafür, dass nichts in das FileLog geschrieben wird.
Das Verhalten ist übrigens in vielen anderen Modulen ebenfalls so umgesetzt.
Es war schon immer ein gutes Totschlagargument, daß andere etwas auch so machen.
Die Frage von P.A.Trick war immerhin, wieso wird ein Filehandle benutzt und eine Datei angelegt, wenn sie per Definition (disable 1) nicht verwendet werden soll.
In allem Anderen hast Du sicher recht.
Zitat von: mimue am 07 September 2020, 06:53:54
Die Frage von P.A.Trick war immerhin, wieso wird ein Filehandle benutzt und eine Datei angelegt, wenn sie per Definition (disable 1) nicht verwendet werden soll.
Weil während des FHEM Starts das Filehandle beim define des devices erzeugt wird und das Setzen des Attributes erst viel später erfolgt. Durch das Setzen des Attributes wird weder das Log-Device gelöscht noch irgendwas anderes physikalisches an diesem File geändert. Beim define des device wird erstmal davon ausgegangen, dass es auch benutzt werden soll.
Cool nach 5 Jahren wird das Thema wieder aktuell. Ich hole mir mal Popcorn :-)