FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: bgewehr am 10 August 2014, 13:26:52

Titel: Log rotation auf Frit!Box 7390
Beitrag von: bgewehr am 10 August 2014, 13:26:52
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
Titel: Antw:Log rotation auf Frit!Box 7390
Beitrag von: rudolfkoenig am 10 August 2014, 16:54:31
Und hier (http://fhem.de/commandref.html#FileLogattr) auch nicht?
Titel: Log rotation auf Frit!Box 7390
Beitrag von: bgewehr am 10 August 2014, 18:30:26
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!
Titel: Antw:Log rotation auf Frit!Box 7390
Beitrag von: Brockmann am 10 August 2014, 20:25:06
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.
Titel: Antw:Log rotation auf Frit!Box 7390
Beitrag von: bgewehr am 10 August 2014, 20:36:01
OK, ich glaube, jetzt hab ich's begriffen, danke!   :-\ ::)
Titel: Log rotation auf Frit!Box 7390
Beitrag von: Fritzi am 10 August 2014, 22:48:18
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
Titel: Antw:Log rotation auf Frit!Box 7390
Beitrag von: bgewehr am 10 August 2014, 22:52:59
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
Titel: Antw:Log rotation auf Frit!Box 7390
Beitrag von: Fritzi am 10 August 2014, 23:09:53
Und das ist genau das Problem. nrarchive ist da keine Lösung, weil die Daten der alten Files eben nicht geplottet werden.
Titel: Antw:Log rotation auf Frit!Box 7390
Beitrag von: bgewehr am 11 August 2014, 06:28:44
Vielleicht sowas hier? http://www.unix.com/shell-programming-and-scripting/44337-truncate-log-files.html
Titel: Log rotation auf Frit!Box 7390
Beitrag von: Fritzi am 16 August 2014, 23:56:23
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 foundtest.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?
Titel: Antw:Log rotation auf Frit!Box 7390
Beitrag von: hexenmeister am 17 August 2014, 02:39:35
Auf den ersten blick: es werden falsche anführungszeichen verwendet.
Titel: Log rotation auf Frit!Box 7390
Beitrag von: Fritzi am 17 August 2014, 08:14:01
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?
Titel: Antw:Log rotation auf Frit!Box 7390
Beitrag von: rudolfkoenig am 17 August 2014, 17:21:23
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)"
Titel: Log rotation auf Frit!Box 7390
Beitrag von: Fritzi am 20 August 2014, 18:38:51
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.