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

Python logger配置DEBUG级别handler仍无法打印debug日志问题

问题原因分析

1. 初始版本代码的核心错误

你最初的代码里打印日志用的是logging.debug("App instance started"),这个调用的是根logger,不是你自定义绑定了handler的那个logger实例。根logger默认级别是WARNING,DEBUG级别的日志直接被根logger过滤了,根本到不了handler环节。

2. 修改后代码仍不输出的核心原因

你调整后代码虽然改用了自定义的logger.debug,但你只设置了handler的级别为DEBUG,没有设置logger本身的日志级别:
Python logging模块的日志过滤顺序是:

  • 先检查当前logger本身的级别,如果日志级别低于logger设置的级别,直接丢弃,不会传递给任何handler,也不会向上传递
  • 只有日志级别≥logger本身的级别,才会交给当前logger绑定的所有handler处理
  • 之后再根据propagate参数决定是否向上传递给父logger处理

你自定义的logger没有手动设置级别,默认会继承父logger的级别,根logger默认是WARNING,所以DEBUG级别的日志在logger层就被过滤了,自然不会输出。

解决方案

直接给你自定义的logger设置对应级别即可,修改代码如下:

logger = logging.getLogger(__name__)
# 新增这行,设置logger本身的级别为DEBUG
logger.setLevel(logging.DEBUG)
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
logger.addHandler(console_handler)

如果需要避免日志同时被父logger重复输出,可以额外加一行:

logger.propagate = False

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 22:15:03