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

Python logging模块warning日志写入.log文件无内容问题排查

问题根因

Python内置logging模块的logging.basicConfig()方法存在明确的生效前提:只有根日志记录器(root logger)未绑定任何处理器(handler)时,传入的配置参数才会真正生效。
你在集成pandapower的项目代码中调用logging.basicConfig()之前,pandapower在导入初始化阶段就已经提前给根logger绑定了默认处理器,因此你写的这行配置完全没有执行实际的日志绑定逻辑:

logging.basicConfig(filename='result_test.log', encoding='utf-8', level=logging.WARNING)

空的result_test.log文件之所以会被创建,是因为basicConfig()运行时只要检测到传入了filename参数,就会先尝试创建对应空文件,哪怕后续因为根logger已有处理器、跳过了配置流程,这个空文件也会被保留,自然不会有任何日志内容写入。

修复方法

放弃使用basicConfig()做日志配置,直接手动操作根logger绑定文件处理器即可,把原来的logging.basicConfig(...)行替换为如下代码:

import logging

# 先清除根logger上已绑定的旧处理器
for existing_handler in logging.root.handlers[:]:
    logging.root.removeHandler(existing_handler)

# 手动创建并绑定文件日志处理器
log_handler = logging.FileHandler(filename='result_test.log', encoding='utf-8')
log_handler.setLevel(logging.WARNING)
# 按需配置日志输出格式
log_format = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
log_handler.setFormatter(log_format)
logging.root.addHandler(log_handler)

替换完成后,你代码中所有logging.warning()、logging.error()级别的日志,包括pandapower诊断模块输出的对应级别日志,都会正常写入result_test.log文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 22:42:23