Ankündigung

Einklappen
Keine Ankündigung bisher.

Logging-Filter richtig setzen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Logging-Filter richtig setzen

    Hallo zusammen,

    wie ich in anderen Threads hier näher erläutert habe, schalte ich meinen Russound-Verstärker per Schaltaktor stromlos, wenn ich ihn nicht brauche. Dadurch bekomme ich im Log alle ca. 8 Sekunden folgende Meldungen:

    Code:
    2023-06-03  21:29:42 WARNING  lib.network         (TCP_Client_192.168.1.107:9621) TCP connection failed 1/5 times, last error was: [Errno 113] No route to host
    2023-06-03  21:29:50 WARNING  lib.network         (TCP_Client_192.168.1.107:9621) TCP connection failed 2/5 times, last error was: [Errno 113] No route to host
    2023-06-03  21:29:58 WARNING  lib.network         (TCP_Client_192.168.1.107:9621) TCP connection failed 3/5 times, last error was: [Errno 113] No route to host
    2023-06-03  21:30:06 WARNING  lib.network         (TCP_Client_192.168.1.107:9621) TCP connection failed 4/5 times, last error was: [Errno 113] No route to host
    2023-06-03  21:30:14 WARNING  lib.network         (TCP_Client_192.168.1.107:9621) TCP connection failed 5/5 times, last error was: [Errno 113] No route to host
    Diese Meldungen möchte ich nun per Filter in der Logging.yaml ausblenden. Ich habe es so versucht:

    Code:
    version: 1
    disable_existing_loggers: False
    formatters:
        shng_simple:
            format: '%(asctime)s %(levelname)-8s %(name)-19s %(message)s'
            datefmt: '%Y-%m-%d  %H:%M:%S'
        shng_detail:
            format: '%(asctime)s %(levelname)-8s %(module)-17s %(threadName)-12s %(message)s  --  (%(filename)s:%(funcName)s:%(lineno)d)'
            datefmt: '%Y-%m-%d %H:%M:%S %Z'
    filters:
        russoundfilter:
            (): lib.logutils.Filter
            msg: "(TCP_Client_192.168.1.107:9621) TCP connection failed 1/5 times, last error was: [Errno 113] No route to host"            
    handlers:
        console:
            class: logging.StreamHandler
            formatter: shng_detail
            stream: ext://sys.stdout
        shng_warnings_file:
            (): lib.log.ShngTimedRotatingFileHandler
            formatter: shng_simple
            level: WARNING
            when: midnight
            backupCount: 7
            filename: ./var/log/smarthome-warnings.log
            encoding: utf8
            filters: [russoundfilter]
        shng_details_file:
            (): lib.log.ShngTimedRotatingFileHandler
            formatter: shng_detail
            level: DEBUG
            when: midnight
            backupCount: 7
            filename: ./var/log/smarthome-details.log
            encoding: utf8
    loggers:
        __main__:
            level: WARNING
            handlers: [shng_details_file]  
        plugins.knx:
            handlers: [shng_details_file]
            level: DEBUG
        
    #  lib.scheduler:
    #    level: DEBUG
    #  plugins.cli:
    #    level: DEBUG
    
    root:
        level: WARNING
        handlers: [shng_warnings_file]
    Das funktioniert allerdings nicht. Zwar bekomme ich auch keine Fehlermeldung, die unter "msg:" angegebene Meldung wird aber auch nicht ausgeblendet.

    Ich habe diesen Beitrag gelesen: https://smarthomeng.de/user/konfigur...practices.html

    Dort wird für einen Filter folgendes Format angegeben:

    Code:
    filter:
        meinfilter:
            (): lib.logutils.Filter
            module: "[sS]tate[eE]ngineLogger"
            name: "plugins.stateengine.licht.test"
            msg: "(.*)Item (.*) not found!"
            #invert: True
    Muss ich also einen "name" und ein "module" angeben? Name wäre bei mir dann wohl "__main__", aber was muss ich bei "module" angeben? Oder liegt es nicht daran?

    Ich verwende SHNG in der Version 1.9.3

    Danke!
    Cheers
    Art Mooney

    #2
    Ich denke, es sollte auch ohne Module und Name geben, auch wenn es nicht schadet, bei Module "lib.network" anzugeben. Denke ich Sonst mal ohne probieren.
    Das Problem liegt eher in der msg. Dort muss man valide regex angeben. Also zB Klammern "escapen". Ich empfehle, hier auf Python zu stellen und das dann manuell auszuprobieren: https://regex101.com/

    Auf die Schnelle sollte das hier klappen
    Code:
    \(TCP_Client_192\.\168\.1\.107:9621\) TCP connection failed(.*)
    Hier steht im Übrigen, dass die msg eine regex sein muss https://smarthomeng.de/user/referenz...ng_filter.html
    In dem von dir verlinkten Dokument sollte ich das wohl noch mit rein nehmen..
    Zuletzt geändert von Onkelandy; 06.06.2023, 20:58.

    Kommentar


      #3
      Danke! Es geht ohne module und name. Der Link war wahnsinnig hilfreich.

      Der folgende Ausdruck tut's:

      msg: ".TCP_Client_192.168.1.107:9621..TCP.connection.fa iled...5.times..last.error.was.."
      Cheers
      Art Mooney

      Kommentar


        #4
        Morg

        Zitat von Art Mooney Beitrag anzeigen
        wie ich in anderen Threads hier näher erläutert habe, schalte ich meinen Russound-Verstärker per Schaltaktor stromlos, wenn ich ihn nicht brauche. Dadurch bekomme ich im Log alle ca. 8 Sekunden folgende Meldungen:
        das ist ein Grund für den Featurewunsch von mir das man Plugins auf Stop bzw. Pause setzen können sollte
        Zuletzt geändert von bmx; 09.06.2023, 07:38.

        Kommentar


          #5
          Absolut richtig. Das feature hatte ich im develop auch getestet, aber leider nicht erfolgreich. "suspend()" ging zuverlässig, "activate()" aber nicht. Das hatte ich hier kurz rückgemeldet.
          Cheers
          Art Mooney

          Kommentar

          Lädt...
          X