Ich nutze nrarchive, um Dateien automatisch nach 3 Versionen zu löschen.
Das klappt auch super, bis auf eine Ausnahme:
Meine IT-Logfiles bleiben leer wenn nichts geloggt wird, werden aber trotzdem automatisch angelegt.
Das ist mir eigentlich egal. Was mich aber wundert ist der Umstand, dass keine Dateien gelöscht werden. Alle Dateien ohne Logeinträge bleiben erhalten. Somit habe ich schon eine ganze Menge angesammelt.
Hier mal ein Beispiel, eigentlich dürften hier nur 3 Stück sein:
IT_0F000F000F-2015-07-29.log text
IT_0F000F000F-2015-07-30.log text
IT_0F000F000F-2015-07-31.log text
IT_0F000F000F-2015-08-01.log text
IT_0F000F000F-2015-08-02.log text
IT_0F000F000F-2015-08-03.log text
IT_0F000F000F-2015-08-04.log text
IT_0F000F000F-2015-08-05.log text
IT_0F000F000F-2015-08-06.log text
IT_0F000F000F-2015-08-07.log text
IT_0F000F000F-2015-08-08.log text
Ist denn dieses Verhalten erwünscht? Ich denke, das ist ein Bug. Wozu sollte denn nrarchive bei leeren Dateien eine Ausnahme machen?
Danke.
Eigentlich gibt es keine Ausnahme fuer leere Dateien. Das Archivieren kann man auch manuell ausloesen mit:
{ HandleArchiving($defs{FileLog_NAME}) }
falls was geloescht wird, steht im FHEM-Log "Deleting DATEINAME" mit loglevel 2.
Falls das nicht drinsteht, dann muss man in fhem.pl/HandleArchiving ein paar
Log 1, "LINE:".__LINE__;
Zeilen einstreuen, um es naeher zu lokalisieren.
Danke für den Tipp. Hat (halb) geholfen. :-)
Gut, das Auslösen per Hand klappt. Im Log steht:
2015.08.08 15:16:15 2: Deleting IT_0FF000FFFF-2015-07-28.log
2015.08.08 15:16:15 2: Deleting IT_0FF000FFFF-2015-07-29.log
2015.08.08 15:16:15 2: Deleting IT_0FF000FFFF-2015-07-30.log
2015.08.08 15:16:15 2: Deleting IT_0FF000FFFF-2015-07-31.log
2015.08.08 15:16:15 2: Deleting IT_0FF000FFFF-2015-08-02.log
2015.08.08 15:16:15 2: Deleting IT_0FF000FFFF-2015-08-03.log
2015.08.08 15:16:15 2: Deleting IT_0FF000FFFF-2015-08-04.log
2015.08.08 15:16:15 2: Deleting IT_0FF000FFFF-2015-08-05.log
Das automatische Löschen geht jedoch nicht.
Hast du noch eine Idee? Sonst müsste ich das statt mit nrarchive mit DOIF machen. Es scheint ja nur das automatische Auslösen nicht zu gehen. Vielleicht doch ein Fehler im Code?
Danke.
Koennte sein, dass du FHEM an den abgebildeten Tagen (== fast taeglich) neu gestartest hast?
HandleArchiving wird nur dann aufgerufen, falls was ins Logfile zu schreiben ist, oder falls man fuers SVG Daten abholt. Ich denke daruber noch nach, ob ich das fixen soll (d.h. auch nach dem Start aufgeraeumt wird), oder nicht.
Ich starte wirklich fast täglich neu, da ich noch viel an fhem programmiere und auch die Updates mache. Trotzdem klappt es ja bei allen Filets, ausser bei denen, die leer sind. So wie ein Eintrag vorhanden ist, wird auch entsprechend nrarchive archiviert/gelöscht.
Danke.
Ich habe HandleArchiving beim Startup jetzt eingebaut, bin auf unbeabsichtigte Nebenwirkungen gespannt.
Vielen Dank. Ich hoffe, dass ausser einem erfreuten Lächeln keine Nebenwsirkungen auftreten. :-)
So, habe ein Update gemacht und das erfreute Lächeln ist festzustellen. :-)
Ich habe allerdings einen Effekt bemerkt, von dem ich nicht weiss, ob es so gewollt ist:
Bei mir steht nrarchive auf 3. Es wurden bisher 4 Dateien angezeigt, also 3 von den Vortagen und eine vom aktuellen Tag.
Jetzt ist es so, dass 3 Dateien angezeigt werden und zwar 2 von den Vortagen und eine aktuelle.
Ich werde morgen noch einmal kontrollieren, ob das so bleibt, oder ob der Effekt nur durch die erstmalige Nutzung der Änderung aufgetreten ist.
Nochmals vielen Dank für die Änderung.
Hallo Rudi, deine Änderungen bewirkten bei mir nichts gutes, mein LOG-Verzeichnis wurde quasi leergeräumt :-\ ,
muss ich evtl. bei der Konfiguration was ändern ?
Bspl.:
define Logfile FileLog ./log/fhem-%Y-%m.log fakelog
attr Logfile archivedir ./log-archive/
attr Logfile group FHEM-LOG
attr Logfile nrarchive 0
attr Logfile room LOG
Von diesen Thread habe ich erst später erfahren, hier hab ich angefangen:
http://forum.fhem.de/index.php/topic,39883.0.html
Gruß
Tom
Zitat von: Tom111 am 10 August 2015, 22:18:12
Hallo Rudi, deine Änderungen bewirkten bei mir nichts gutes, mein LOG-Verzeichnis wurde quasi leergeräumt :-\ ,
muss ich evtl. bei der Konfiguration was ändern ?
Kann ich bestätigen. Bei mir wurden beim gestrigen Update/Neustart ebenfalls einige log-Files gelöscht. Kam etwas überraschend... ;)
Einige log-Files sind jedoch erhalten geblieben. Und zwar diejenigen bei denen das Attribut nrarchive NICHT gesetzt war.
Dummerweise "baut" fhem die gelöschten log-Files nicht wieder auf.
Die log-File-Definitionen sind allerdings noch in der cfg enthalten.
Grüsse,
Fritzi
Bei mir funktioniert die Erstellung von Logfiles auch nicht richtig. Ich nur jeden 2. Tag ein Logfile, falls der Vorgänger leer ist, also am Vortag kein Event eingetragen wurde.
Logfiles, die befüllt werden, funktionieren hingegen einwandfrei.
Allerdings archiviere ich keine Dateien, sondern nutze nrarchive lediglich zur Anzahlbegrenzung.
FileLog_IT_F0FFF0FFFF
IT_F0FFF0FFFF-2015-08-08.log text
IT_F0FFF0FFFF-2015-08-10.log text
IT_F0FFF0FFFF-2015-08-12.log text
Wie gesagt, diese Dateien sind leer, weil kein Device etwas gemeldet hat.
@Invers: habe den off-by-one Fehler jetzt korrigiert, ab jetzt sollten immer 1+nrarchive Dateien existieren.
@Tom111: deine Logfile Definition enthaelt "nrarchive 0", damit hast du das Loeschen aller alten Dateien bestellt. Wg. der gerade gefixten Fehlers wurde am Anfang eine Datei mehr (bei dir damit die aktuelle) geloescht. Eigentlich ist Logfile ein "Fakelog", und wird nur fuer die Darstellung in FHEMWEB benoetigt. Der eigentliche fhem-log samt "korrektes" nrarchive laeuft ueber das global device.
@Fritzi: da steht zu wenig konkretes, dass ich darauf antworten koennte.
Vielen dank, ich werde es ausprobieren und erneut berichten.
Zitat von: rudolfkoenig am 13 August 2015, 20:17:20
@Tom111: deine Logfile Definition enthaelt "nrarchive 0", damit hast du das Loeschen aller alten Dateien bestellt. Wg. der gerade gefixten Fehlers wurde am Anfang eine Datei mehr (bei dir damit die aktuelle) geloescht. Eigentlich ist Logfile ein "Fakelog", und wird nur fuer die Darstellung in FHEMWEB benoetigt. Der eigentliche fhem-log samt "korrektes" nrarchive laeuft ueber das global device.
Was heißt das jetzt konkret ? Muss ich narchive jetzt eine 1 zuweisen !?
Es ist etwas komisch, denn ich habe mich genau an dieser Anweisung gehalten:
http://www.fhemwiki.de/wiki/Logfiles_archivieren (http://www.fhemwiki.de/wiki/Logfiles_archivieren)
Zitatnrarchive 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).
:-\
Konkret heisst das, du sollst nrarchive fuer Logfile entfernen, und "attr global nrarchive 0" setzen. Ab den morgigen update ist das zwar nicht unbedingt noetig, ist aber weniger verwirrend, wenigstens fuer mich.