You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

日志级别异常:DEBUG与INFO级别的日志无法正常输出

问题原因及解决办法

1. Logger本身未设置日志级别

Python的logging模块中,Logger对象默认的日志级别是WARNING,只有级别≥WARNING的日志才会被传递给Handler处理。你只给两个Handler设置了级别,但Logger本身的级别没调整,导致DEBUG和INFO级别的日志直接被Logger过滤掉,根本到不了Handler环节。

解决办法:在创建Logger后,设置其级别为DEBUG(这样所有级别≥DEBUG的日志都会被放行到Handler):

self.logger = logging.getLogger(__name__)
self.logger.setLevel(logging.DEBUG)  # 新增这一行

2. 日志格式字符串存在语法错误

你的Formatter格式字符串里有个笔误:%(&lt;levelname)s 应该是 %(levelname)s,多了个多余的<符号,这会导致日志格式化失败(不过这不是DEBUG/INFO不输出的直接原因,但会影响日志显示)。修正后的格式字符串:

log_format = logging.Formatter(fmt='%(asctime)s - %(name)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S')

验证修改后的完整代码

# Create a custom logger
self.logger = logging.getLogger(__name__)
self.logger.setLevel(logging.DEBUG)  # 新增Logger级别设置

# Create handlers
self.handler_cmdline = logging.StreamHandler()
self.handler_file = logging.FileHandler(self.logfile)
self.handler_cmdline.setLevel(logging.DEBUG)
self.handler_file.setLevel(logging.INFO)

# Create formatters and add it to handlers
log_format = logging.Formatter(fmt='%(asctime)s - %(name)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
self.handler_cmdline.setFormatter(log_format)
self.handler_file.setFormatter(log_format)

# Add handlers to the logger
self.logger.addHandler(self.handler_cmdline)
self.logger.addHandler(self.handler_file)

self.logger.debug('Initialisation Complete')
self.logger.info('Initialisation Complete')
self.logger.warning('Initialisation Complete')
self.logger.critical('Initialisation Complete')

修改后,控制台(StreamHandler)会输出所有级别≥DEBUG的日志,日志文件(FileHandler)会输出所有级别≥INFO的日志,符合预期。

内容的提问来源于stack exchange,提问作者smyril

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 17:55:27