Wechsel des Dateinamens in FileLog

Begonnen von Prof. Dr. Peter Henning, 25 Februar 2014, 08:33:51

Vorheriges Thema - Nächstes Thema

Prof. Dr. Peter Henning

Guten Morgen,

seit einiger Zeit beobachte ich, dass das FileLog-Modul mit der folgenden Definition:


define SolarLogM FileLog /home/fhem/fhemlogs/solarM_%Y-%m-%d.log nt5000:(W_D).*
attr SolarLogM archivedir /home/fhem/fhemarchive
attr SolarLogM nrarchive 3
attr SolarLogM room Logs


unerwartetes Verhalten zeigt. Die Definition des Dateinamens sollte eigentlich dafür sorgen, dass an jedem Tag ein neues Logfile begonnen wird.

Das ist aber nicht der Fall: Vielmehr wird in ca. 50% (tatsächlicher Anteil schwankt) der Fälle das ALTE Logfile weiter geschrieben - so auch heute: Wir haben den 25.2., aber der currentfilename bleibt auf solarM_2014-02-24 stehen, siehe  Screenshot.

Ein Muster ist darin bisher nicht zu entdecken.

LG

pah

rudolfkoenig

FileLog prueft bei jedem Logging-Aufruf ob Dateiname sich geaendert hat. An diesem Mechanismus hat sich seit Jahren(?) nichts geaendert, ich vermute also Aenderungen ausserhalb von FileLog.

Worauf zeigt $defs{SolarLogM}{currentlogfile} ?
(Sorry, hat sich mit dem Blick auf Screenshot erledigt).

rudolfkoenig

Wenn ich meinen eigenen Code noch verstete, kann das nur passieren, falls die lokale Zeit nicht genau ist, oder strftime nicht mehr funktioniert.

Prof. Dr. Peter Henning

Äh - nö. Beides ist ok auf dem RPi.

Im Augenblick des Screenshot hat allerdings noch kein Event stattgefunden, der vom FileLog abgefangen würde.
Auch wenn ich ein set SolarLogM reopen absetze, ändert sich der Dateiname nicht.

Könnte man das nicht so umbauen, dass eine Änderung des Dateinamens (wenn durch die Namensdefinition vorgesehen) auch bei einem set .. reopen erfolgt ? Das würde mein Problem schon beseitigen.

LG

pah

rudolfkoenig

Doch, koennte man. Aber welches Problem?

betateilchen

hat pah doch eigentlich sehr spezifisch erklärt:

Das Problem ist, dass der Namenswechsel nach einem Tageswechsel bisher erst nach dem ersten zu loggenden Event stattfindet, und das kann auch weit nach Mitternacht sein. Würde der Namenswechsel bereits bei einem reopen stattfinden, könnte man einfach ein periodisches at definieren, das um 00:00:01 ein reopen durchführt und hätte damit bereits 1 Sekunde nach Mitternacht ein neues Logfile mit dem "richtigen" Namen.

So habe ich das Anliegen zumindest verstanden :)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

DAS habe ich kapiert. Nur nicht, wieso es es Probem ist.

hexenmeister

Zitatwieso es es Probem ist.
*glaskugelguck* ein externer Zugriff auf die Logs? ???
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

betateilchen

#8
zum Beispiel  8)

Das Dateinamenproblem von FileLog war für mich einer der entscheidenden Gründe, das Logging auf DbLog umzustellen.

Letztendlich geht es ganz einfach darum, den Dateinamenswechsel zu einem genau spezifizierten Zeitpunkt "erzwingen" zu können, egal ob es gerade was zu Loggen gibt oder nicht. Damit ist anhand des Zeitpunktes der zu verwendende Dateiname festgelegt und nicht nur "vielleicht schon vorhanden".
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

Habs in reopen wie vorgeschlagen eingebaut und eingecheckt.

Prof. Dr. Peter Henning

Sorry, dass ich jetzt erst anworte - habe aber auch noch andere Dinge zu tun.

DIe "Glaskugel" war genau der richtige Hinweis. Denn ich frage beim morgendlichen Start meiner PV-Anlage den Lognamen ab und schreibe dann direkt etwas dort hinein.

Dnake für das Aufgreifen des reopen-Vorschlags.

LG

pah