[英]Logging not displaying debug level when level is set by dictConfig
编辑:我发现了这个问题,但我不完全确定它为什么会这样做。
问题在于LOGGING_CONFIG['handlers']['default']['level']
。 如果我删除该密钥,那么我将获得所需的功能,但我不知道为什么它没有被my_package.module.logger
记录器覆盖。 对此的解释将不胜感激。
我正在尝试为我正在创建的 package 创建一个日志记录模块,但我不太了解 python logging
配置字典,因此,我无法解决我遇到的问题,记录器的级别应该打印调试消息,但不是。 我有以下结构:
my_package
|
|-----__init__.py
|-----module
| |
| |-----__init__.py
| |-----logger.py
| |-----run_me.py
logger.py
看起来像这样:
import logging
import logging.config
LOGGING_CONFIG = {
'version': 1,
'disable_existing_loggers': True,
'formatters': {
'standard': {
'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s'
},
},
'handlers': {
'default': {
'level': 'INFO',
'formatter': 'standard',
'class': 'logging.StreamHandler',
'stream': 'ext://sys.stdout', # Default is stderr
},
},
'loggers': {
'': { # root logger
'handlers': ['default'],
'level': 'WARNING',
'propagate': False
},
'my_package.module.logger': {
'handlers': ['default'],
'level': 'DEBUG',
'propagate': False
},
'__main__': { # if __name__ == '__main__'
'handlers': ['default'],
'level': 'INFO',
'propagate': False
},
}
}
logging.config.dictConfig(LOGGING_CONFIG)
log = logging.getLogger(__name__)
log.warning('Configured for Warnings')
log.debug('Configured for Debug')
log.info('Configured for Info')
这是run_me.py
import my_package.module.logger
如果我直接运行logger.py
,我会得到预期的 output
> TIME [WARNING] __main__: Configured for Warnings
> TIME [INFO] __main__: Configured for Info
但是如果我运行run_me.py
,我似乎没有得到预期的 output - 缺少调试级别信息:
> TIME [WARNING] my_package.module.logger: Configured for Warnings
> TIME [INFO] my_package.module.logger: Configured for Info
如果我将 LOGGING_CONFIG 中的记录器名称从LOGGING_CONFIG
my_package.module.logger
为my_package.module
,问题仍然存在,我认为它应该捕获模块目录中的任何内容。
如果我从配置字典中删除__main__
记录器,我也会在直接运行logger.py
时得到预期的行为 - 它只显示警告 output。
为什么调试级别没有出现,尽管它被明确设置?
处理程序的级别设置为 INFO,它不会打印任何 DEBUG 消息。
'handlers': {
'default': {
'level': 'INFO', <-------- here
我不熟悉您使用的格式,我使用的是以下格式,它总是对我有用:
logging.basicConfig(
filename = 'c:\\logs\\XXXX.log',
level = logging.DEBUG,
format = '[XXX] %(levelname)-7.7s %(message)s'# )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.