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

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

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


当前回答

答案在这里:Python:如何从第三方库中抑制日志记录语句?

您可以为basicConfig保留默认日志级别,然后在获取模块的日志记录器时设置DEBUG级别。

logging.basicConfig(format='%(asctime)s %(module)s %(filename)s:%(lineno)s - %(message)s')
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)

logger.debug("my debug message")

其他回答

答案在这里:Python:如何从第三方库中抑制日志记录语句?

您可以为basicConfig保留默认日志级别,然后在获取模块的日志记录器时设置DEBUG级别。

logging.basicConfig(format='%(asctime)s %(module)s %(filename)s:%(lineno)s - %(message)s')
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)

logger.debug("my debug message")
import logging

# Only show warnings
logging.getLogger("urllib3").setLevel(logging.WARNING)

# Disable all child loggers of urllib3, e.g. urllib3.connectionpool
logging.getLogger("urllib3").propagate = False

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

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

在记录器部分添加urllib3:

[loggers]
keys = root, urllib3

添加logger_urllib3 section:

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

我不确定之前的方法是否已经停止工作,但无论如何,这里有另一种消除警告的方法:

PYTHONWARNINGS="ignore:Unverified HTTPS request" ./do-insecure-request.py

基本上,就是在脚本执行的上下文中添加一个环境变量。

来自文档:https://urllib3.readthedocs.org/en/latest/security.html#disabling-warnings