FHEM Logfile Archivierung und Hintergrundprozesse

Begonnen von Phiolin, 21 Februar 2018, 15:10:12

Vorheriges Thema - Nächstes Thema

Phiolin

Hintergrundprozesse loggen ja hier meist nach STDOUT, wie z.B. der SONOS Hintergrundprozess. Das führt dazu, dass die Ausgabe der Prozesse in das FHEM Logfile geht. Soweit ist das auch ganz schön.

Nun habe ich aber im global Device die Archivierung von Logfiles eingestellt und das Logfile-Pattern so geändert, dass jeden Tag ein neues FHEM Logfile begonnen wird.

archiveCompress 1
archivedir /opt/fhem/log/archive
logfile ./log/fhem-%Y-%m-%d.log
nrarchive 3


Jetzt wird zwar jede Nacht das FHEM Log rotiert und ein neues File begonnen, die Hintergrundprozesse loggen jedoch weiter gemütlich in das alte Logfile, genau genommen in das Logfile, dass aktuell war, als der Prozess gestartet wurde. Das kann also das von gestern sein, oder auch von vorgestern... oder von letzter Woche. Je nachdem wie lange so ein Hintergrundprozess nun schon läuft.
Das ist natürlich nicht so schön. Zum einen findet man dann nie die Logmeldungen die man gerade sucht und zum anderen kommt es auch mit dem Archiving durcheinander, wenn das alte Log archiviert und dann auch noch gzip'd wird.

Gibt's hier mögliche Abhilfe?

rudolfkoenig

Ich befuerchte nicht, jedenfalls nicht ohne Verraenkung.

Warum: FHEM dupliziert (siehe man 2 dup) das FHEM-Log zu STDOUT/STDERR, und das wird an die gestarteteten Prozesse weitervererbt, danach hat FHEM keine Einwirkung mehr auch die Filedeskriptoren dieser Prozesse.
Verraenkung: FHEM oeffnet ein PIPE, gibt das eine Ende dem Prozess als STDOUT/STDERR, liest das andere Ende aktiv, und schreibt die Daten ins aktuelle Logfile. Schlecht, da diese Daten dann alle durch FHEM laufen (fuer jedes der gestarteten Programme ein FD + Kopierarbeit) + Programmieraufwand.

Phiolin

Macht wahrscheinlich auch aus Performance Sicht keinen Sinn mit der Pipe.
Hm, vielleicht sollte man dann für langlaufende Hintergrundprozesse Regeln einführen, z.B. das diese ihre eigene Logfile Mechanik mitbringen müssen. SONOS hat das meines Wissens sogar, aber natürlich nicht so schön mit konfigurierbaren Dateinamens-Pattern und Rotation etc...

Mal schauen, was ich mir da einfallen lasse.
Alternativ könnte man noch den Hintergrundprozess jeden Tag nach der Rotation neu starten. Auch nicht ideal natürlich, aber in Anbetracht der nicht wirklich vorhandenen Alternativen.... ???