Welches Format für Attribute nrarchive und archivedir in FileLog ?

Begonnen von MaMü, 20 März 2013, 15:06:41

Vorheriges Thema - Nächstes Thema

MaMü

Moin,

ich möchte die Filelogs regelmäßig archivieren. Dazu habe ich ein Unterverzeichnis log-archive angelegt, in das jeweils die "alten" (geschlossenen) Logs abgelegt werden sollen.

Habe verstanden, dass dazu archivedir und nrarchive (sowie archivecmd) da sind. Allerdings ist die Commandref hier etwas sehr allgemein gehalten, daher 2 Fragen:

Leider bin ich durch Ausprobieren nicht weiter gekommen bzw. müßte ja jeweils auf den Monats-/Wochen- oder Tageswechsel warten :-/...

1. zu archivedir, welches nach meinem Verständnis das Verzeichnis ist, in dass die "alten" Logfiles jeweils (mit ihrem Originalnamen!) geschoben werden, Frage:

Wie ist das Format, braucht es ein schliessendes "/"?
Also ist
attr FileLog_myDEVICE archivedir ./log-archive
richtig oder
attr FileLog_myDEVICE archivedir ./log-archive/
?

2. zu nrarchive
(Zitat aus der Doku: "If this attribute is not set, but nrarchive and/or archivecmd are set, then nrarchive old logfiles are kept along the current one while older ones are ...")
Was macht nrarchive nun genau? Ist das die Anzahl der "alten" Logfiles, die ich behalten möchte (und Rest wird gelöscht)?

Thx!
MaMü


Edit: Ähem... ist das eigentlich eine Anfängerfrage?

MaMü

Moin,

da auf meine obige Anfrage keine Hinweise kamen und die Doku (für mich) nicht klar war, hab' ich mir durch Probieren die Frage nun selbst beantwortet :-)... Hier für die nach-mir-Suchenden das Ergebnis:

1. Im Attribut "archivedir" gibt man das Verzeichnis an, welches als Archivverzeichnis "alter" Logdateien (FileLog) genutzt werden soll. Es MUSS mit einem "/" abschliessen!

Beispiel:
attr FileLog_FHT_Bad archivedir ./log-archive/
verschiebt "alte" Logdateien in das Verzeichnis "log-archive" unterhalb von FHEM. Es ist möglich, unterschiedliche Archivverzeichnisse zu definieren, denn dies wird pro (FileLog-pro-)Gerät gemacht.

2. Der Parameter "nrarchive" gibt an, wie viele FileLog-Dateien nach Ablauf der Gültigkeit im Original-Logverzeichnis verbleiben, bevor diese ins Archiv verschoben werden.

Beispiel a:

define FileLog_FHT_Bad FileLog ./log/FHT_Bad-%Y-%m.log FHT_Bad
attr FileLog_FHT_Bad archivedir ./log-archive/
attr FileLog_FHT_Bad logtype fht:Temp/Act,text
attr FileLog_FHT_Bad nrarchive 0
attr FileLog_FHT_Bad room 97.Filelogs


Hier wird definiert, dass für das FileLog für ein Bad ein Logfile (mit Daten aus einem FHT80b) geführt wird, dessen Dateiname monatlich wechselt. Die Dateinamen sind FHT_Bad-2013-01.log, FHT_Bad-2013-02.log usw...

nrarchive ist 0. Das bedeutet, dass zu jedem Monatswechsel die nun nicht mehr aktuelle FileLog-Datei ins Archive (archivedir) verschoben wird (es werden 0 "alte" Dateien im Orignalverzeichnis gehalten). Wenn man ein weblink_FHT_Bad hat und am 1. März mit dem grünen Pfeil einen Tag zurück browsen möchte, bleibt die Anzeige leer (was bei monatlicher Speicherung nicht weiter schlimm ist - aber eben ein Nebeneffekt).

Beispiel b:

define FileLog_FHT_Bad FileLog ./log/FHT_Bad-%Y-%m-%d.log FHT_Bad
attr FileLog_FHT_Bad archivedir ./log-archive/
attr FileLog_FHT_Bad logtype fht:Temp/Act,text
attr FileLog_FHT_Bad nrarchive 5
attr FileLog_FHT_Bad room 97.Filelogs


Hier wird definiert, dass für das FileLog für ein Bad ein Logfile (mit Daten aus einem FHT80b) geführt wird, dessen Dateiname täglich wechselt. Die Dateinamen sind FHT_Bad-2013-01-01.log bis FHT_Bad-2013-01-31.log usw...

nrarchive ist 5. Das bedeutet, dass zu jedem Tageswechsel die nun nicht mehr aktuelle FileLog-Datei so lange im Original-Logverzeichnis behalten wird, bis 5 davon in diesem Verzeichnis sind (es werden 5 "alte" Dateien im Orignalverzeichnis gehalten). Solche, die älter als 5 Tage sind, werden ins Archiv (archivedir) verschoben. Wenn man ein weblink_FHT_Bad hat und am 1. März mit dem grünen Pfeil einen Tag zurück browsen möchte, funktioniert das für die letzten 5 Tage.

HTH someone, Gruß MaMü

P.S.: Nach meiner Erfahrung spielt für die (gefühlte) Performance von FHEM die Größe eines Logs keine Rolle. Man sollte sich aber klar sein, welche Datenmengen für ein Gerät im Filelog landen... bei einem FHT80b sind das pro Monat bei mir 720kb (macht pro Jahr über 8 MB). Das kann in einer Jahresdatei schon mal unübersichtlich werden, falls man extern noch weitere Auswertungen mit den Dateien fährt.

herrmannj

Hallo MaMü,

ZitatWenn man ein weblink_FHT_Bad hat und am 1. März mit dem grünen Pfeil einen Tag zurück browsen möchte, funktioniert das für die letzten 5 Tage.

Diese Aussage finde ich hoch spannend, genau dieses Verhalten (ein logfile pro Tag, trotzdem tageweise im Weblink zurückblättern: entsprechende logs im dir vorausgesetzt) versuche ich schon lange zu bekommen. Da es bei mir einfach nicht mag bin ich bisher davon ausgegangen dass das einfach nicht implementiert ist.

Kannst Du (oder ein Mitleser) das bitte nochml explizit bestätigen ?
(Dann muss ich nochmal ganz genau untersuchen warum das bei mir nicht geht)

Danke und Grüße
herrmannj

slor

Danke MaMü für diese gute Analyse.
Läuft das alles noch ohne Probleme?

Gibt es eine Möglichkeit archivcmd manuell zu triggern um testen zu können?

Sebastian
Fhem auf Raspberry Pi 4
CCU3 mit RaspberryMatic mit HMCCU an FHEM
HMCCU, Telegram, Conbee2 und Hue/Tradfri/Osram Lampen AQARA Sensoren, HomeConnect

Mitch

Muss mich hier mal in den alten Fred einklinken, weil auch ich Probleme mit dem Commanref habe.

Ich will meine "alten Logs löschen und habe dazu nrarchive 1 global gesetzt.
Nachdem ich kein Archivverzeichnis angegeben habe, werden die alten Log nun gelöscht? Richtig?
FHEM im Proxmox Container

aeronaut

Zitat von: herrmannj am 10 Mai 2013, 01:26:38
Diese Aussage finde ich hoch spannend, genau dieses Verhalten (ein logfile pro Tag, trotzdem tageweise im Weblink zurückblättern: entsprechende logs im dir vorausgesetzt) versuche ich schon lange zu bekommen. Da es bei mir einfach nicht mag bin ich bisher davon ausgegangen dass das einfach nicht implementiert ist.

Kannst Du (oder ein Mitleser) das bitte nochml explizit bestätigen ?
(Dann muss ich nochmal ganz genau untersuchen warum das bei mir nicht geht)

Moin Jörg, falls du nicht längst selber drauf gekommen bist: ich kann das bestätigen. Ich habe zwar Monatsdateien und keine Tagesdateien, aber im Plot kann ich solange zurückblättern, wie Logfiles da sind. Liegen die in archivedir, geht's nicht mehr.

lg
aeronaut

hyper2910

Hallo zusammen,

ich habe die Befehle zum verschieben der Logs genutzt, und es funktioniert alles prima.

Jedoch habe ich zwei Geräte, welche nicht regelmässig Daten in Logs schreiben, z.b. eine Aussenlampe, welche nur Angeht, wenn ich nach 22.00 Uhr nicht zu hause bin.

Dieses Device kreiert aber ein Log mit 0Bytes, dieses kann nicht verschoben werden, ich weiss nicht warum Archivedir dieses nicht macht. Ist hier vielleicht eine mindestgrösse der Files vorgegeben?
Cubietruck mit FHEM, CUL V3 443MHz, 2 x CULV3 868MHz, Milights, Max Heizungssteuerung, Homematic, IT,

bugster_de

Hi,

auch wenn etwas älter wollte ich auch nochmal danke für die gute Beschreibung sagen. Das war genau was ich gesucht habe.

Da ich nun schon zweimal einen SD-Karten defekt im FHEM Raspberry hatte, habe ich nun umgestellt:
ich habe eine RAM-Disk angelegt und lass die Logfiles nun dorthin schreiben. Das narchive Attribut steht auf 1, so dass immer die jeweils letzte Log Datei noch da ist. Dann habe ich mein NAS auf den Raspberries gemountet und dieses Verzeichnis als Archive-Dir angegeben. Sprich sobald eine neue Log-Datei erzeugt wird, werden die alten Log Files automatisch auf mein NAS als Backup geschoben. Somit als Vorteil keinerlei Schreibvorgänge auf der SD Karte beim Loggen. Nachteil ist halt, dass bei Stromausfall oder Reboot die letzten beiden Log-Files weg sind.
Hat mich bisher noch nicht übermässig gestört; falls doch kann man per cron job die Dateien regelmässig mittels rsync auch auf das NAS schieben.

db7

Zitat von: slor am 03 Dezember 2013, 15:01:41
Danke MaMü für diese gute Analyse.
Läuft das alles noch ohne Probleme?

Gibt es eine Möglichkeit archivcmd manuell zu triggern um testen zu können?

Sebastian

Moin,

habe mir soeben die gleiche Frage gestellt, leider dazu keinen Befehl gefunden. Eine Lösung gibt es dennoch :-)


  • Archiv-Parameter setzen
  • aktuelle Log-Datei umbenennen
  • fhem neu starten


attr FileLog_FHT_Bad archivedir ./log-archive/
attr FileLog_FHT_Bad nrarchive 1


im Log-Verzeichnis:

mv FileLog_FHT_Bad-2017-12.log FileLog_FHT_Bad-2017-12.log.old



Nun werden die Log-Files nach den Regeln der Archivierung verarbeitet.
Jetzt fehlt jedoch ein Teil des loggings in meiner aktuellen Log-Datei.

dazu die Log-Files zusammenkopieren

cp FileLog_FHT_Bad-2017-12.log.old FileLog_FHT_Bad-2017-12.log > FileLog_FHT_Bad-2017-12.log

und ein reopen durchführen.

set FileLog_FHT_Bad reopen

sowie die temp. Log-Datei löschen


rm FileLog_FHT_Bad-2017-12.log.old


Vielleicht geht es auch eleganter?

Grüße Detlev.

fhemHeRo

Danke MaMü,

dait hast du mir das Problem mit den risigen Logfiles gelöst.
Das war genau das was ich gesucht habe.
Habe die Anzahl der Archive au 90 gesetzt und mache jetzt für jeden Tag ein neues Logfile.
Der Raspi arbeitet wieder sehr schnell und die Plots werden in einem atemberaubendem Tempo angezeigt.

Gruß Heinz