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: Über invert kann das durch die obigen Parameter erzeugte Filter Ergebnis invertiert werden

Bis auf invert können alle Parameter Listen von Strings sein. Diese Strings können Regular Expressions enthalten.

Benutzung des Filters

In der Datei ../etc/logging.yaml wird der Filter im Abschnitt filters: zur Nutzung konfiguriert.

filters:
    duplicatefilter:
        (): 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.