如何关闭 Python requests 库输出的日志?

requests 的日志来自它自己和底层 urllib3,把这两个 logger 的级别设为 WARNING 即可静音。本文给出代码写法和 Django settings 配置方式。

最佳实践
如何关闭 Python requests 库输出的日志?封面

requests 的调试日志由 requestsurllib3 两个 logger 产生,把它们的级别提升到 WARNING 就不会再刷 INFO/DEBUG 消息。

代码中设置

import logging

logging.getLogger("requests").setLevel(logging.WARNING)
logging.getLogger("urllib3").setLevel(logging.WARNING)

实际刷屏的主要是 urllib3 的连接池日志(Starting new HTTPS connection...),两行都加上才能彻底安静。

Django 项目:在 settings.py 配置

LOGGING = {
    # ...
    'loggers': {
        'urllib3': {
            'handlers': ['file'],
            'level': 'WARNING',
            'propagate': False,
        },
        'requests': {
            'handlers': ['file'],
            'level': 'WARNING',
            'propagate': False,
        },
    },
}

原理解释

Python 的 logging 按 logger 名称分层(urllib3.connectionpoolurllib3 的子 logger)。对父 logger 设级别,子 logger 的消息会沿层级传递并受其 handler 影响。设为 WARNING 后,DEBUG/INFO 级别的请求日志被过滤,警告和错误仍然保留——这正是你想要的行为。

常见问题(FAQ)

Q:设了 WARNING 还是有输出?
A:检查是否有代码调用了 logging.basicConfig(level=logging.DEBUG),或第三方库自己加了 handler。也可以顺便把 urllib3.connectionpool 单独设级别。

Q:会不会把真正的错误也藏掉?
A:不会。WARNING 级别只过滤 INFO 和 DEBUG,连接失败、超时等 ERROR 级日志照常输出。

Q:只想临时静音一次请求?
A:可以用上下文管理器临时调级别,结束后恢复;但更常见的需求是全局调一次,放在应用入口即可。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台