FileLog: Unterschied zwischen den Versionen
K (Kategorie "Logging" eingefügt) |
Cori (Diskussion | Beiträge) (Attr ignoreRegexp für global ergänzt) |
||
Zeile 19: | Zeile 19: | ||
:<code>attr <log-name> ignoreRegexp .*AbCd.*|.*CdEf.*</code> | :<code>attr <log-name> ignoreRegexp .*AbCd.*|.*CdEf.*</code> | ||
eine Attributdefinition, die das ermöglicht. | eine Attributdefinition, die das ermöglicht. | ||
Dies bezieht sich aber nur auf normale FileLog-Instanzen. Falls Events aus dem globalen FHEM-Logfile ausgeschlossen werden sollen, muss man das Attribut in '''global''' angeben. (Zusammenhang siehe [[#Globale Logdatei und "fakelog"|Globale Logdatei und "fakelog"]]) | |||
:<code>attr global ignoreRegexp .*AbCd.*|.*CdEf.*</code> | |||
== Funktionen == | == Funktionen == |
Version vom 27. Dezember 2019, 02:57 Uhr
FileLog | |
---|---|
Zweck / Funktion | |
Protokollierung von Fhem-Ereignissen | |
Allgemein | |
Typ | Hilfsmodul |
Details | |
Dokumentation | EN / DE |
Support (Forum) | Automatisierung |
Modulname | 92_FileLog.pm |
Ersteller | rudolfkoenig (Forum / Wiki) |
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! |
Das Modul FileLog dient zur Protokollierung von Ereignissen in Fhem. Die Einträge werden in eine einfache Textdatei geschrieben. Zur Protokollierung in eine Datenbank kann alternativ oder auch parallel das Modul DbLog verwendet werden.
Logdateien sind die Basis für die Erstellung von Diagrammen (SVG).
Definition
Details in der commandref/FileLogdefine.
Attribute
Über Attribute lässt sich unter anderem auch festlegen, wie die Archivierung von Logdateien durchgeführt werden soll (Archivierungsbefehl, -pfad sowie Anzahl von Archivgenerationen).
Wenn bestimmte Zeilen nicht in die Logdatei geschrieben werden sollen, ist das Attribut ignoreRegexp hilfreich. Wenn beispielsweise alle Zeilen, die die Zeichenfolge "AbCd" oder "CdEf" enthalten nicht geloggt werden sollen, dann wäre
attr <log-name> ignoreRegexp .*AbCd.*|.*CdEf.*
eine Attributdefinition, die das ermöglicht.
Dies bezieht sich aber nur auf normale FileLog-Instanzen. Falls Events aus dem globalen FHEM-Logfile ausgeschlossen werden sollen, muss man das Attribut in global angeben. (Zusammenhang siehe Globale Logdatei und "fakelog")
attr global ignoreRegexp .*AbCd.*|.*CdEf.*
Funktionen
FileLog bietet Funktionen wie reopen, absorb und get. Details dazu sind in der commandref/FileLogset zu finden.
Sofern eine Instanz vom Objekt eventTypes angelegt ist, bietet die Detailansicht eines FileLog eine komfortable Möglichkeit, die regulären Ausdrücke für den/die Filter zu bearbeiten. Siehe hierzu auch diesen Beitrag.
Globale Logdatei und "fakelog"
Die globale Logdatei (üblicherweise als fhem.log bezeichnet) für Fhem wird mit dem Attribut
attr global logfile XXX
für das global-Objekt definiert, wobei für XXX normalerweise ./log/fhem-%Y-%m.log
verwendet wird.
Um das fhem.log über das Web Interface anzeigen zu können, ist ein weiterer Eintrag in der Konfiguration erforderlich, nämlich:
define Logfile FileLog XXX fakelog
Das XXX muss zwingend durch den gleichen Wert ersetzt werden, wie in der Definition des globalen logfile Attributs, weil anderenfalls unterschiedliche Dateien verwendet werden - mit dem Effekt, dass die über das Web Interface angezeigte Datei nicht die erwarteten Einträge enthält (Details dazu auch in diesem Forenbeitrag).
Werte auslesen
Manchmal möchte man Daten aus den Logs abrufen ohne händisch in den Logfiles herumzuwühlen. Dies ist insb. auch dann hilfreich, wenn man eigenen Funktionen, Notifys oder spezielle Plots entwirft, bei denen man auf Logdaten zugreifen möchte.
Grundsätzlich beschrieben ist dies in der commandref/FileLog und unterscheidet sich minimal (aber entscheidend) von der Struktur bei DbLogs.
Hier ein paar Beispiele, was man damit anstellen kann:
get FileLog_FHT_3a32 - - 2016-10-01 2016-10-03
alle Einträge des FileLog_FHT_3a32 vom 01.10.-03.10.2016get FileLog_FHT_3a32 - - 2016-10-01_08:00:00 2016-10-01_16:00:00
alle Einträge des FileLog_FHT_3a32 von 8-16 Uhr am 01.10.2016get FileLog_FHT_3a32 - - 2016-10-01_08:00:00 2016-10-01_16:00:00 4:measured:0:
nur die Temperatur-Werte{ ReadingsTimestamp("FHT_3a32","state","0") }
Timestamp des aktuellen state des FHT_3a32{ OldTimestamp("FHT_3a32") }
Timestamp des letzten state des FHT_3a32{ time_str2num(OldTimestamp("FHT_3a32")) }
Timestamp in Sekunden des letzten state des FHT_3a32- ...
Weitere Beispiele kann man sich gut aus den SVG-Dateien ziehen.
Links
- Forenbeitrag zum Thema fhem.log / fakelog