Python logging配置DEBUG级别后不输出DEBUG、INFO日志如何解决
问题原因
- 你代码中调用日志输出的
logger对象未进行显式配置,Python logging模块默认创建的日志器级别为WARNING,只有级别大于等于WARNING的日志才会被处理。 - 你通过
logging.basicConfig设置的是root根日志器的级别和输出规则,如果你使用自定义的logger实例,它本身的级别限制会先过滤日志,低于WARNING的DEBUG、INFO日志在到达根日志器的处理器之前就会被丢弃,自然不会写入日志文件。 - 额外注意:
logging.basicConfig仅在第一次调用时生效,如果在执行该配置前已经有过任何日志输出操作,配置也会失效。
解决方案
方案1:直接使用根日志器调用输出
把所有logger.xxx的调用改为logging.xxx,直接使用根日志器,你配置的规则就会直接生效:
import logging logging.basicConfig(filename='rb-log.log', format='%(process)d-%(asctime)s-%(levelname)s-%(message)s', level=logging.DEBUG) # 改用logging顶层方法调用 logging.debug('This is a debug message') logging.info('This is an info message') logging.warning('This is a warning message') logging.error('This is an error message') logging.critical('This is a critical message')
方案2:显式配置自定义日志器的级别
如果需要使用自定义logger实例,显式获取实例后设置其级别为DEBUG即可:
import logging logging.basicConfig(filename='rb-log.log', format='%(process)d-%(asctime)s-%(levelname)s-%(message)s', level=logging.DEBUG) # 显式获取日志器实例并设置级别 logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG) logger.debug('This is a debug message') logger.info('This is an info message') logger.warning('This is a warning message') logger.error('This is an error message') logger.critical('This is a critical message')
内容的提问来源于stack exchange,提问作者Rupesh Bhurke
相关产品推荐
相关产品推荐

