Logging Filter
Mit der Hilfe von Logging Filtern kann innerhalb eines Handlers gesteuert werden, ob ein Log Record erzeugt werden soll, oder ob die Information verworfen werden soll.
SmartHomeNG bringt einige Logging Filter mit.
CherryPyFilter
Das im http Modul von SmartHomeNG genutzte CherryPy Modul erzeugt leider unerwartete/unerwünschte Log Einträge, die in einigen Logs auftreten können. Um diese Log Einträge zu unterdrücken, kann der CherryPyFilter genutzt werden, den das http Modul mitbringt.
Benutzung des Filters
In der Datei ../etc/logging.yaml
wird der CherryPyFilter im Abschnitt filters:
zur Nutzung
konfiguriert.
filters:
cherrypy_filter:
(): modules.http.CherryPyFilter
Um den Filter in einem Log-Handler anzuwenden, muss der Filter noch in der Konfiguration des entsprechenden
Handlers im Abschnitt handlers:
konfiguriert werden:
handlers:
shng_details_file:
(): lib.log.ShngTimedRotatingFileHandler
formatter: shng_simple
level: DEBUG
utc: false
when: midnight
backupCount: 7
filename: ./var/log/smarthome-details.log
encoding: utf8
filters: [cherrypy_filter]
DuplicateFilter
Manchmal ist es wünschenswert mehrere gleich lautende Logeinträge, die direkt aufeinander folgen zu unterdrücken und nur den ersten Log Eintrag wirklich in das Log zu schreiben. Diese Aufgabe erfüllt der DuplicateFilter.
Benutzung des Filters
In der Datei ../etc/logging.yaml
wird der DuplicateFilter im Abschnitt filters:
zur Nutzung
konfiguriert.
filters:
duplicatefilter:
(): lib.logutils.DuplicateFilter
Um den Filter in einem Log-Handler anzuwenden, muss der Filter noch in der Konfiguration des entsprechenden
Handlers im Abschnitt handlers:
konfiguriert werden.
Filter
Filter ist ein recht universeller Filter, der über eine Reihe von Parametern konfiguriert werden kann:
name: Name des Loggers (regex)
module: Loggendes Module (regex)
msg: Log Message (regex)
timestamp: Zeitpunkt des Logeintrages (regex)
invert: False/True. Über invert kann das durch die obigen Parameter erzeugte Filter Ergebnis invertiert werden
Bis auf invert können alle Parameter Listen von Regular Expressions sein.
Benutzung des Filters
In der Datei ../etc/logging.yaml
wird der Filter im Abschnitt filters:
zur Nutzung
konfiguriert. Dabei ist die erste Zeile (): lib.logutils.Filter zwingend anzugeben,
außerdem zumindest eine der darauffolgenden Zeilen (module, msg, timestamp). Die Angaben
sind dabei als reguläre Ausdrücke anzugeben und können sogar in Listenform erfolgen.
Bei Modulen wie item, metadata, etc. ist KEIN voranstehendes lib. anzugeben.
filters:
examplefilter:
(): lib.logutils.Filter
name: []
module: []
msg: []
timestamp: []
invert: False
Um den Filter in einem Log-Handler anzuwenden, muss der Filter noch in der Konfiguration des entsprechenden
Handlers im Abschnitt handlers:
konfiguriert werden.