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

Python logging模块问题:StreamHandler无法输出DEBUG与INFO日志

为什么我的Python logging无法记录DEBUG和INFO级别的日志?

嘿,这个问题我刚学logging的时候也踩过!核心原因很简单:你只给Handler设置了DEBUG级别,却忘了给Logger本身设置级别。

Python的日志系统是双层过滤机制:一条日志要最终输出,得先过Logger这一关,再过Handler这一关。默认情况下,Logger的级别是logging.WARNING,所以哪怕你的Handler愿意接收DEBUG日志,Logger已经先把DEBUG和INFO级别的日志直接过滤掉了,根本到不了Handler那里。

怎么修复?

只需要在创建Logger之后,加上一行设置Logger级别的代码就行:

import logging
if __name__ == "__main__" :
    logger = logging.getLogger("test")
    # 关键:给Logger设置DEBUG级别,让它允许DEBUG及以上的日志通过
    logger.setLevel(logging.DEBUG)
    c_handler = logging.StreamHandler()
    c_handler.setLevel(logging.DEBUG)
    logger.addHandler(c_handler)
    # 测试日志
    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')

额外唠两句

  • 如果不给Logger显式设置级别,它会继承父Logger的级别,而根Logger的默认级别就是WARNING
  • 你可以灵活搭配Logger和Handler的级别:比如Logger设DEBUG,Handler设INFO,这样DEBUG日志会被Logger放行,但被Handler拦截,不会输出;反过来如果Logger级别比Handler高,那低级别日志连Logger这关都过不了

修改后再运行代码,就能得到你预期的全部日志输出了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:50:48