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

Zih*_*ihs 12 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=
Run Code Online (Sandbox Code Playgroud)

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

No handlers found for logger __main__
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

hel*_*loV 15

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

记录HOWTO

对basicConfig()的调用应该在调用debug(),info()等之前进行.因为它打算作为一次性的简单配置工具,只有第一次调用实际上会做任何事情:后续调用实际上是无操作.

或者所有logging.info('开始记录器为...')将自动调用logging.basicConfig().所以类似于:

import logging
logging.info('Starting logger for...') # or call logging.basicConfig()
LOG = logging.getLogger(name)
Run Code Online (Sandbox Code Playgroud)

模块作者这种行为的原因在这里