找不到记录器的处理程序__main__

时间:2014-12-10 22:09:31

标签: python logging handlers

我使用 logconfig.ini 文件在我的python包中设置日志记录。

[loggers]
keys=extracts,root

[formatters]
keys=simple,detailed

[handlers]
keys=file_handler

[formatter_simple]
format=%(module)s - %(levelname)s - %(message)s
datefmt=%Y-%m-%d %H:%M:%S

[formatter_detailed]
format=%(asctime)s %(name)s:%(lineno)s %(levelname)s %(message)s
datefmt=%Y-%m-%d %H:%M:%S

[handler_file_handler]
class=logging.handlers.RotatingFileHandler
level=DEBUG
formatter=detailed
args=('/ebs/logs/foo.log', 'a', 100000000, 3)

[logger_extracts]
level=DEBUG
handlers=file_handler
propagate=1
qualname=extracts

[logger_root]
level=NOTSET
handlers=

但每当我运行我的应用程序时,我会在提示符下收到以下警告消息,

No handlers found for logger __main__

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:14)

您必须先调用logging.basicConfig():

Logging HOWTO

  

对basicConfig()的调用应该在调用debug()之前进行,   info()等因为它是一次性的简单配置   设施,只有第一个电话实际上会做任何事情:后续   呼叫实际上是无操作。

或者所有logging.info('启动记录器...')将自动调用logging.basicConfig()。如下所示:

import logging
logging.info('Starting logger for...') # or call logging.basicConfig()
LOG = logging.getLogger(name)

模块作者此行为的原因是here

答案 1 :(得分:2)

我发现了我的错误。 事实证明,根记录器用于main。 我只需将处理程序附加到根记录器,就像这样,

[logger_root]
level=NOTSET
handlers=file_handler