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

如何保留自有模块DEBUG日志并屏蔽第三方模块DEBUG日志?

解决方案

要保留main.py及my_submodule1~9的DEBUG日志,同时屏蔽thirdparty_module的DEBUG日志,只需针对第三方模块的日志记录器单独调整级别即可,无需修改第三方代码。

修改后的main.py代码

import logging, sys
logging.basicConfig(
    level=logging.DEBUG, 
    handlers=[logging.FileHandler("test.log"), logging.StreamHandler(sys.stdout)]
)  # 全局root日志级别设为DEBUG,确保自有模块DEBUG日志正常输出
logger = logging.getLogger("main")
logger.info("hello main!")

# 获取第三方模块的日志记录器,将级别设为INFO及以上,过滤DEBUG日志
thirdparty_logger = logging.getLogger("thirdparty_module")
thirdparty_logger.setLevel(logging.INFO)

import thirdparty_module
thirdparty_module.foo()

import my_submodule1

核心原理

Python日志系统中,每个模块的日志记录器通过logging.getLogger(模块名)创建,彼此独立且默认继承父级(通常是root)的日志级别:

  • 我们通过指定名称获取第三方模块的日志记录器,将其级别设为logging.INFO后,该记录器只会处理INFO及更高级别的日志,DEBUG日志会被直接过滤。
  • 自有模块的日志记录器继承root的DEBUG级别,因此它们的DEBUG日志不受影响,会正常输出到文件和控制台。

扩展:彻底屏蔽第三方模块所有日志

如果需要禁止第三方模块输出任何日志(包括INFO及以上级别),可直接禁用该记录器:

thirdparty_logger = logging.getLogger("thirdparty_module")
thirdparty_logger.disabled = True

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 09:55:19