2017-09-06 14 views
1

Pythonロガーの使用私は2つのハンドラを持っています。ロギングを 'main'に設定すると、logger.handler変数にハンドラが設定されていないことがわかります。代わりに、syslogのルートハンドラを使用します。指定されたハンドラを使用しないPythonログ

以下は使用中のコードと構成のコピーです。

コード:

def load_config(self): 
    logging.config.fileConfig('/etc/msdb/integration/logging.conf') 
    log = logging.getLogger('main') 
    log.debug("Hello") 

設定:

[loggers] 
keys=root,props,main,thread,rabbit,blockchain 

[handlers] 
keys=file,syslog 

[formatters] 
keys=simple 

[logger_root] 
level=DEBUG 
handlers=syslog 

[logger_props] 
level=DEBUG 
handlers=file 
qualname=Properties 
propagate=0 

[logger_main] 
level=DEBUG 
handlers=file 
qualname=Main 
propagate=0 

[logger_thread] 
level=DEBUG 
handlers=file 
qualname=Thread 
propagate=0 

[logger_rabbit] 
level=DEBUG 
handlers=file 
qualname=RabbitMQ 
propagate=0 

[logger_blockchain] 
level=DEBUG 
handlers=file 
qualname=BigChainDB 
propagate=0 

[handler_file] 
class=logging.handlers.RotatingFileHandler 
level=NOTSET 
formatter=simple 
args=('/var/log/msdb/msdb.intergration.log','a', 100000, 1, 'utf8') 

[handler_syslog] 
class=StreamHandler 
level=DEBUG 
formatter=simple 
args=(sys.stdout,) 

[formatter_simple] 
format=%(asctime)s - %(levelname)%s - %(threadName)%s - %(filename)s:%(lineno)d - %(message)s 
datefmt= 

答えて

2

logger_mainセクションを変更設定はMainqualnameの設定)、ログに記録するロガーはmainとなります。ロガー名では大文字と小文字が区別されます。名前は、物事が予想どおりに動作するように正確に一致する必要があります。

+0

ありがとうございました!私の頭を何時間も傷つけていた、それはとても単純なものだとは信じられない! –

0

は、あなたがmain.pyでコールload_configしていると仮定し、あなたのロガーでためですlogging.conf

[logger_main] 
level=DEBUG 
handlers=file 
qualname=__main__ ## or the __name__ attr of your .py file 
propagate=0 
関連する問題