2012-12-13 10 views
18

Ich habe ein Problem mit Python logging lib. Mit dem folgenden Code ich einen "Logger" erstellen:Python Logging.DEBUG Ebene protokolliert nicht

logger = logging.getLogger() 
def logger_init(level): 
    try: 
     syslog = SysLogHandler(address=LOG_DESTINATION) 
    except Exception, ex: 
     return 
    formatter = logging.Formatter('%(module)s[%(process)d]: %(message)s') 
    syslog.setFormatter(formatter) 
    syslog.setLevel(level) 
    logger.addHandler(syslog) 

Und ich nenne es mag:

logger.debug (SOME_STR_TO_BE_LOGGED)

OR wie:

logger.error (SOME_STR_TO_BE_LOGGED)

Und ich initialisieren den Logger mit:

log_level = logging.ERROR 
if options.DEBUG_LOG: #### This comes from options parser and it is True. 
    log_level = logging.DEBUG 
logger_init(log_level) 

Das Problem ist, dass die error und warn funktioniert sehr gut, aber weder info noch debug Methoden druckt etwas syslog.

Ich benutze syslog-ng und ich entwarf meinen Filter, das heißt es wird jeden Level von debug bis emerg akzeptieren.

Was ist das Problem hier? Irgendwelche Ideen?

Antwort

21

Sie müssen auch die Ebene des Loggers einstellen, nicht nur den Handler.

Fügen Sie diese auf Ihre logger_init:

logger.setLevel(level)