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

使用Python logging模块写入日志到文件时如何关闭控制台输出

问题原因

Python logging 模块默认的根日志器(root logger)自带了输出到控制台的StreamHandler,你自定义的resource_manager日志器默认开启了日志事件向上传播的属性,因此日志事件会冒泡到根日志器,触发根的StreamHandler输出到控制台。

解决方案

方案1:仅针对当前自定义日志器禁用控制台输出

只需在配置自定义logger的代码中,添加一行关闭日志传播的配置即可,不会影响其他日志器的行为:
logger.propagate = False

修改后的完整代码如下:

import logging
import time

logger = logging.getLogger('resource_manager')
logger.setLevel(logging.DEBUG)
# 关闭日志向父日志器传播,阻止触发根日志器的控制台输出
logger.propagate = False
info_log = logging.FileHandler('/home/nvidia/Videos/Info.log')
info_log.setFormatter(logging.Formatter('%(asctime)s - %(message)s'))
info_log.setLevel(logging.INFO)
logger.addHandler(info_log)

delay = 0 # 示例变量,请替换为你业务逻辑中的实际变量
logger.info(f'{(time.time()-delay)}')

方案2:全局禁用所有日志的控制台输出

如果希望所有日志都不会输出到控制台,可以直接清空根日志器的默认处理器:

# 清空根日志器默认的StreamHandler
logging.getLogger().handlers.clear()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:09:02