为了账号安全,请及时绑定邮箱和手机立即绑定

如何禁用请求库中的日志消息?

如何禁用请求库中的日志消息?

猛跑小猪 2019-10-15 09:44:37
默认情况下,Requests python库按照以下方式将日志消息写入控制台:Starting new HTTP connection (1): example.comhttp://example.com:80 "GET / HTTP/1.1" 200 606我通常对这些消息不感兴趣,因此想禁用它们。使这些消息静音或降低请求的冗长程度的最佳方法是什么?
查看完整描述

3 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

我发现了如何配置请求的日志记录级别,这是通过标准的日志记录模块完成的。我决定将其配置为不记录消息,除非它们至少是警告:


import logging


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

如果您也希望将此设置应用于urllib3库(通常由请求使用),请添加以下内容:


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


查看完整回答
反对 回复 2019-10-15
?
繁星coding

TA贡献1797条经验 获得超4个赞

如果您是来这里寻找修改任何(可能是深度嵌套的)模块的日志记录的方法,请使用它logging.Logger.manager.loggerDict来获取所有记录器对象的字典。然后可以将返回的名称用作以下参数logging.getLogger:


import requests

import logging

for key in logging.Logger.manager.loggerDict:

    print(key)

# requests.packages.urllib3.connectionpool

# requests.packages.urllib3.util

# requests.packages

# requests.packages.urllib3

# requests.packages.urllib3.util.retry

# PYREADLINE

# requests

# requests.packages.urllib3.poolmanager


logging.getLogger('requests').setLevel(logging.CRITICAL)

# Could also use the dictionary directly:

# logging.Logger.manager.loggerDict['requests'].setLevel(logging.CRITICAL)

请注意每个用户136036中的注释,此方法仅显示运行上述代码片段时存在的记录器。例如,如果某个模块在实例化一个类时创建了一个新的记录器,则必须在创建该类之后放置此代码段以打印其名称。


查看完整回答
反对 回复 2019-10-15
  • 3 回答
  • 0 关注
  • 448 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信