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

Python logging的FileHandler仅记录error日志不记录其他级别如何解决

1. 配置存在的问题

Python logging模块的日志过滤遵循双层规则:日志首先会经过Logger实例本身的级别过滤,只有通过过滤的日志才会下发到绑定的各个Handler做二次级别过滤。
你的代码中只给FileHandler设置了DEBUG级别,但调用logging.getLogger()拿到的是root Logger实例,它的默认日志级别是WARNING,仅允许级别>=WARNING的日志通过。INFO级别低于WARNING,直接被root Logger拦截,不会传递到FileHandler,因此日志文件中仅能看到ERROR级别的日志。

2. 实现任意级别日志写入FileHandler的方案

只需要在配置时主动将root Logger的级别也设置为DEBUG即可,确保所有级别的日志都能通过Logger层的过滤,下发到FileHandler处理。
修改后的code.py代码如下:

import sys
import logging

def setup_logging():
    global logger
    logger = logging.getLogger()
    # 新增以下行,设置root Logger的级别为DEBUG
    logger.setLevel(logging.DEBUG)
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    open('data_module.log', 'w').close()  # 清空日志内容
    global fileHandler
    fileHandler = logging.FileHandler('data_module.log')
    fileHandler.setFormatter(formatter)
    fileHandler.setLevel(logging.DEBUG)
    logger.addHandler(fileHandler)
    logger.error('Started')  # 错误日志
    logger.info('information')  # 信息日志

修改后运行test.py,日志文件会同时包含ERROR和INFO两条日志,断言可以正常通过。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:18:03