[gelöst] Filelog linesInThrFile zählt nicht mit.

Begonnen von automatisierer, 29 Januar 2017, 09:42:09

Vorheriges Thema - Nächstes Thema

automatisierer

Hallo,
ich möchte mir gern, falls mein Logfile innerhalb einer bestimmten Zeit mehr als XY Zeilen dazu bekommt, eine Nachricht schicken lassen.

In meiner global Logfile Definition, wird dieses Reading allerdings nicht aktualisiert. Es bleibt immer auf 0. In allen anderen FileLog Definitionen funktioniert es.

list Logfile
Internals:
   DEF        ./log/fhem-%Y-%m-%d.log fakelog
   NAME       Logfile
   NR         76
   NTFY_ORDER 50-Logfile
   REGEXP     fakelog
   STATE      active
   TYPE       FileLog
   currentlogfile ./log/fhem-2017-01-29.log
   logfile    ./log/fhem-%Y-%m-%d.log
   Readings:
     2017-01-29 00:00:01   linesInTheFile  0
Attributes:
   nrarchive  20
   room       __LOG
   verbose    3


obwohl reichlich Einträge vorhanden sind.

Gruß
Ingo

rudolfkoenig

Der Logfile eintrag in der Menu ist ein "Fakelog": es nuetzt die Frontend-Funktionalitaet des FileLog Moduls, um Daten aus dem FHEM-Log (die mit ganz anderen Mitteln geschrieben werden) in FHEMWEB anzuzeigen. Diese Logfile genannte FileLog Instanz schreibt die Datei nicht, deswegen ist dieses Attribut auch wirkungslos.

Ein Workaround kenne ich nicht.

automatisierer

Ok, das leuchtet ein.

Hier mein Workaround:


defmod linesInTheFileDoif DOIF ([+00:20:05]) (setreading Logfile linesInTheFileOld [Logfile:linesInTheFile]) (setreading Logfile linesInTheFile {(split(' ',qx (wc -l [Logfile:&currentlogfile])))[0]})
attr linesInTheFileDoif do always


Damit schreibe ich alle 20 Minuten die aktuelle Zeilenanzahl in das Reading und die alte Zeilenanzahl als Vergleichswert in ein anderes Reading.
Ziel ist es mit zu bekommen, wenn bei FHEM was nicht rund läuft und massenweise Logeinträge erstellt werden. Die Readings werte ich mit einem weiteren DOIF aus.

Gruß
Ingo