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

Python Logging的File Handler不生效无法写入日志文件如何解决?

Python Logging FileHandler无法写入问题修复说明

核心遗漏点

你没有显式配置自定义logger实例本身的日志级别。Python logging模块中,未手动设置级别的logger会默认继承父级logger的级别,根logger默认级别为logging.WARNING。
你输出的info级别的日志优先级低于WARNING,因此消息直接被logger本身拦截,没有传递到后续绑定的FileHandler中,导致文件无写入内容。

修复方案

在添加Handler之前,给你创建的test logger手动设置级别即可,示例代码如下:

import logging

logger=logging.getLogger('test')
# 新增配置:设置logger本身的日志级别为DEBUG,允许INFO及以上级别消息通过
logger.setLevel(logging.DEBUG)

#create a stream handler for logging out to console.
stream_handler = logging.StreamHandler()
stream_handler.setLevel(logging.ERROR)

#create a file handler for logging to file
file_handler = logging.FileHandler('logs',mode='a')
file_handler.setLevel(logging.DEBUG)

logger.addHandler(file_handler)
logger.addHandler(stream_handler)

logger.info("this is info")

补充说明

logging模块的日志过滤顺序如下:

  1. 首先校验消息级别是否 ≥ logger本身的级别,不满足则直接丢弃,不会进入Handler处理流程
  2. 满足logger级别后,消息会分发到所有绑定的Handler,依次校验消息级别是否 ≥ Handler的级别,满足则执行对应输出逻辑

按照上述修改后,INFO级别的日志会通过logger校验,且匹配FileHandler的DEBUG级别,就会正常写入logs文件;同时因为StreamHandler的级别为ERROR,INFO日志不会输出到控制台,符合预期配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:09:00