Als fauler Hund hatte ich mir einen kleinen Automaten gebastelt, der vom Normal deutlich abweichende Zahl der Einträge des Logfiles aufgrund zum Beispiel eines Fehlers oder Verbindungsabbruch mich informiert. Dann schaue ich gezielt nach.
Nun ist mir aufgefallen, dass der Zeilenzähler (Reading linesInTheFile) auf den mein Automat "schielt" nach einem set Logfile Clear auf 1 stehenbleibt...
Ist nur ein Schönheitsfehler - aber vielleicht hat jemand mit mehr Programmierdurchblick die Idee, wo im Code der Fall "Clear" das Hochzählen der Zeilen blockiert.
Christian
Ich kann das Problem nicht nachstellen: linesInTheFile wird wg. clear auf 0 gesetzt, und zaehlt danach wie vorher.
Kannst Du bitte fuer das Reproduzieren des Problems eine Anleitung zeigen?
Ich habe den Beitrag von "Frontends/FHEMWEB" nach Automatisierung (Unterforum fuer FileLog) verschoben.
Also: Bei Logs von Devices funktioniert es wie erwartet. Ich mach set logfile clear und der Zähler ist auf 0, weil das Log leer ist. Werden Zeilen geschrieben, dann geht der Zähler rauf.
Anders beim Logfile, das bei mir so definiert ist:
defmod Logfile FileLog ./log/fhem-%Y-%W.log Logfile
attr Logfile alias Logfile
attr Logfile nrarchive 3
attr Logfile room System
setstate Logfile active
setstate Logfile 2024-12-27 07:41:07 linesInTheFile 1
Um 7:41 habe ich manuell im Fhemweb ich mit dem Setter set Logfile clear ausgelöst. Das Log wurde geleert und es wurde automatisch und wie ich finde klug 2024-12-27_07:41:07 Logfile clear eingetragen - damit hatte das Logfile 1 Zeile.
Heute habe ich verzweifelt an einem anderen Problem gekaut und deshalb für ein Device auch den Quasselmodus (verbose=5) an, tausende Zeilen - aber der Zähler ist auch jetzt 10 Stunden später immer noch auf 1. Jetzt cleare ich wieder und er bleibt bei 1...
Danke, dass Du mein Thema ernst nimmst
Christian
Zitatdefmod Logfile FileLog ./log/fhem-%Y-%W.log Logfile
Diese Definition ist nur ein "fake Log", damit man das FHEM-Log in FHEMWEB anzeigen kann.
Das FHEM-Log wird nicht mit den FileLog Routinen geschrieben, und ich wollte fuer die FHEMWEB Anzeige notwendigen Funktionen nicht zweimal implementieren.
Der Zaehler funktioniert auch vor dem clear nicht, weil die Ausgabe nicht ueber das FileLog Modul laeuft.
Aus dem gleichen Grund duerfte auch nrarchive sinnbefreit sein, dafuer sollte man "attr global nrarchive 3" verwenden.
Dass nach "set Logfile clear" ins FHEM-Log "Logfile clear" geschrieben wird, liegt daran, dass jedes set ein Event generiert, und "Logfile clear" das Regexp (Logfile) ausloest, was nicht so beabsichtigt war.
Ich habe das gefixt indem das FileLog ab sofort auf readonly gesetzt wird, falls das Regexp dem Namen des FileLogs entspricht.
Vielen Dank für die Infos - nrachive hatte ich auch in global definiert, sodass es mir nicht aufgefallen ist. Warum dann mein "Warner" selten vermeintlich funktioniert hat, wird ein Rätsel des Computers bleiben.
Christian
Zitat von: rudolfkoenig am 27 Dezember 2024, 18:26:41was nicht so beabsichtigt war.
Ich habe das gefixt
Das finde ich sehr schade, den Eintrag "set Logfile clear" fand ich immer sehr hilfreich, um später noch nachvollziehen zu können, warum im Log nichts drinsteht.
Frohes Neues Jahr!
@Rudi: könnte man Dich irgendwie davon überzeugen, die vorgenommene Änderung wieder zurückzubauen? Der Eintrag im Logfile stört doch überhaupt nicht und der Zeilenzähler zeigt mit "1" auch den korrekten Wert an.
Und offenbar bin ich mit meiner Meinung nicht alleine...
Der Zaehler war nur wegen dieser einer Zeile 1, davor und danach falsch.
Angebot:
- die set Funktion in FileLog kriegt am Ende eine passende Log Zeile, damit wird das Gleiche nicht als Event von diesem FileLog geschrieben, sondern ueber das Log Mechanismus. Duerfte im Endeffekt keinen Unterschied machen.
- bei readonly FileLogs wird linesInTeFile nicht gesetzt.
Moin,
das Angebot klingt gut, danke!
Habe das Angebot eingecheckt.