默认情况下,Requests python库将日志消息写入控制台,如下所示:

Starting new HTTP connection (1): example.com
http://example.com:80 "GET / HTTP/1.1" 200 606

我通常对这些消息不感兴趣,并希望禁用它们。什么是沉默这些消息或减少请求的冗长的最好方法?


当前回答

简单:只需在导入请求后添加requests.packages.urllib3.disable_warnings()

其他回答

让我复制/粘贴文档部分,它是我在一两周前写的,在遇到类似你的问题后:

import requests
import logging

# these two lines enable debugging at httplib level (requests->urllib3->httplib)
# you will see the REQUEST, including HEADERS and DATA, and RESPONSE with HEADERS but without DATA.
# the only thing missing will be the response.body which is not logged.
import httplib
httplib.HTTPConnection.debuglevel = 1

logging.basicConfig() # you need to initialize logging, otherwise you will not see anything from requests
logging.getLogger().setLevel(logging.DEBUG)
requests_log = logging.getLogger("requests.packages.urllib3")
requests_log.setLevel(logging.DEBUG)
requests_log.propagate = True

requests.get('http://httpbin.org/headers')

简单:只需在导入请求后添加requests.packages.urllib3.disable_warnings()

对于任何使用logging.config.dictConfig的人来说,你可以像这样修改字典中的请求库日志级别:

'loggers': {
    '': {
        'handlers': ['file'],
        'level': level,
        'propagate': False
    },
    'requests.packages.urllib3': {
        'handlers': ['file'],
        'level': logging.WARNING
    }
}

如果您有配置文件,可以对其进行配置。

在记录器部分添加urllib3:

[loggers]
keys = root, urllib3

添加logger_urllib3 section:

[logger_urllib3]
level = WARNING
handlers =
qualname = requests.packages.urllib3.connectionpool

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

import logging

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

如果你想对urllib3库(通常由请求使用)也应用这个设置,添加以下内容:

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