下面的代码没有按预期输出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
(因此它不会输出DEBUG
或INFO
消息)。