Hallo,
mein ./log Folder braucht regelmäßige Pflege, die ich gern automatisieren würde.
Eine log-rotation machenwir ja schon mit -%Y-%m, aber das regelmäßige packen oder verschieben auf dem USB-Stick würde ich gern automatisch machen.
Gibt es schon einen Standardansatz dafür? Ich habe hier nichts gefunden...
Danke und Gruß, Bernd
Und hier (http://fhem.de/commandref.html#FileLogattr) auch nicht?
Hallo, Rudolf!
Nun ja, dort steht, dass per archivecmd ein Shell Befehl abgesetzt werden kann, wenn ein neues Log eröffnet wird. Das liefert zwar den Trigger, aber nicht die Lösung.
Ich werde also damit experimentieren, hatte einfach gehofft, mir die Fummelei sparen zu können.
Oder gibt es irgendwo fertige Beispiele für verschiedene Umgebungen und mit oder ohne Zippen?
Ich suche die Lösung für mit Zip auf Fritz!Box 7390!
Vielen Dank!
Hast Du Dir das gründlich durchgelesen und auch die Bedeutung von archivedir und nrarchive erfasst?
Du kannst ganz ohne archivecmd alleine durch Setzen von archivedir und nrarchive alte Logs automatisch an andere Stelle (beispielsweise Dein USB-Stick) verschieben lassen.
Das ist doch schon mal eine ganze Menge Funktionalität, finde ich.
OK, zippen müsstest Du noch selbst, und genau dafür gibt es ja archivecmd.
OK, ich glaube, jetzt hab ich's begriffen, danke! :-\ ::)
Ich hoffe, die Frage ist nicht zu sehr "off-topic", aber kennt jemand eine Möglichkeit, Daten in einem Logfile zu "purgen". Also nicht immer neues File aufzumachen, sondern ältere Daten im Logfile automatisch zu löschen und - sagen wir mal - immer nur die Daten der letzten zwei Tage aufzubewahren?
Mich nervt es etwas, dass ich bei den Plots immer einen harten Cut habe, wenn ein neues File aufgemacht wird.
Liebe Grüße
Fritz
Nun, da ich es begriffen habe, würde ich sagen, dass der vorgegebene Weg dazu der folgende ist: nrarchive ist eine Zahl, die die Anzahl der Archivdateien festlegt, die vorgehalten werden. Wenn der Logdateiname nun mit Logname-%Y-%m-%d.log erstellt wird, bekommst Du für jeden Tag ein Log und soviele Tage, wie Du in nrarchive als Attr des filog devices angegeben hast. Nur leider sind die Daten nicht zusammenhängend, was immer in den SVGs häßliche Lücken ausmacht, aber - man kann nicht alles haben...
Gesendet von meinem iPad mit Tapatalk
Und das ist genau das Problem. nrarchive ist da keine Lösung, weil die Daten der alten Files eben nicht geplottet werden.
Vielleicht sowas hier? http://www.unix.com/shell-programming-and-scripting/44337-truncate-log-files.html
Habe mal etwas experimentiert:
Wenn ich in Fhem das Shell Kommando ""tail -n 100 /var/media/ftp/fhem/log/Heizung-2014-32.log > /var/media/ftp/fhem/log/test.txt""
eingebe, kommt als Ergebnis eine "1" und im log die Meldung: sh: tail -n 100 /var/media/ftp/fhem/log/Heizung-2014-32.log > /var/media/ftp/fhem/log/test.txt: not found
test.txt wird nicht angelegt.
Gebe ich das Kommando jedoch über Telnet ein, funktioniert alles wie gewünscht. test.txt enthält die letzten 100 Zeilen des Heizungs-Log. Was mache ich falsch? Jemand eine Idee?
Auf den ersten blick: es werden falsche anführungszeichen verwendet.
oh, da hatte ich wohl Tomaten auf den Augen...
Packe ich das Kommando nur in ein Paar Anführungszeichen, dann passiert merkwürdigerweise folgendes:
Die test.txt wird angelegt, bleibt aber leer. Der erwartete Inhalt hingegen wird in das Standard fhem.log geschrieben.
Mmmh. Woran kann das jetzt liegen?
Dass FHEM an Shell-Befehle automatisch ein
>> $currlogfile 2>&1
dranhaengt. Falls man Dateiumleitung verwenden will, dann sollte man das in einem sub-shell machen:
"(Befehl > Datei)"
Danke, somit gelöst: define LogKomprimieren at *02:00 "(tail -n 500 ./log/Heizung.log > ./log/HeizungTail.log && cat ./log/HeizungTail.log > ./log/Heizung.log && rm ./log/HeizungTail.log)"
attr LogKomprimieren icon system_fhem
attr LogKomprimieren room Programme
Was passiert hier?
Täglich um 02:00 wird das Logfile "Heizung.log" auf die letzten 500 Readings gekürzt. Somit entfällt das oben beschriebene Problem, dass bei automatisch neu erstellten Logs die Historie in den Plots nicht mehr angezeigt wird.