Python日志在没有basicConfig的情况下不输出较低级别



下面的代码没有按预期输出test

logger = logging.getLogger('foo')
logger.setLevel(logging.DEBUG)
logger.debug('test')

解决方案是在文件的顶部添加一个logging.basicConfig()。为什么这是特别的?据我所知,basicConfig仅为设置了流处理程序和格式化程序。记录器。但是我正在实例化一个新的日志记录器logging.getLogger('foo'),所以我不确定根日志记录器如何影响这个新日志记录器。

相反,我可以理解为什么下面的代码不需要basicConfig,因为您正在为新的日志记录器logging.getLogger('my_logger')

设置处理程序和格式化程序。
logger = logging.getLogger('my_logger')
f_handler = logging.StreamHandler()
logger.addHandler(f_handler)
logger.setLevel(logging.DEBUG)
logger.info('test')

输出是由处理程序完成的,您要么必须手动添加处理程序(如第二个代码段中所示),要么使用basicConfig()向根日志记录器添加一个处理程序。如果您没有配置处理程序,则使用内部的"最后处理程序"。,其级别设置为WARNING(因此它不会输出DEBUGINFO消息)。

最新更新