默认情况下,Requests python库将日志消息写入控制台,如下所示:
Starting new HTTP connection (1): example.com
http://example.com:80 "GET / HTTP/1.1" 200 606
我通常对这些消息不感兴趣,并希望禁用它们。什么是沉默这些消息或减少请求的冗长的最好方法?
默认情况下,Requests python库将日志消息写入控制台,如下所示:
Starting new HTTP connection (1): example.com
http://example.com:80 "GET / HTTP/1.1" 200 606
我通常对这些消息不感兴趣,并希望禁用它们。什么是沉默这些消息或减少请求的冗长的最好方法?
当前回答
对于任何使用logging.config.dictConfig的人来说,你可以像这样修改字典中的请求库日志级别:
'loggers': {
'': {
'handlers': ['file'],
'level': level,
'propagate': False
},
'requests.packages.urllib3': {
'handlers': ['file'],
'level': logging.WARNING
}
}
其他回答
import logging
urllib3_logger = logging.getLogger('urllib3')
urllib3_logger.setLevel(logging.CRITICAL)
这样,来自urllib3的level=INFO的所有消息都不会出现在日志文件中。
因此,您可以继续使用level=INFO为您的日志消息…只需为您正在使用的库修改这个。
答案在这里: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")
对于任何使用logging.config.dictConfig的人来说,你可以像这样修改字典中的请求库日志级别:
'loggers': {
'': {
'handlers': ['file'],
'level': level,
'propagate': False
},
'requests.packages.urllib3': {
'handlers': ['file'],
'level': logging.WARNING
}
}
我不确定之前的方法是否已经停止工作,但无论如何,这里有另一种消除警告的方法:
PYTHONWARNINGS="ignore:Unverified HTTPS request" ./do-insecure-request.py
基本上,就是在脚本执行的上下文中添加一个环境变量。
来自文档:https://urllib3.readthedocs.org/en/latest/security.html#disabling-warnings
将记录器名称设置为请求或请求。Urllib3不适合我。我必须指定确切的记录器名称才能更改日志级别。
首先查看您已经定义了哪些记录器,以查看您想删除哪些记录器
print(logging.Logger.manager.loggerDict)
你会看到这样的东西:
{urllib3……”。poolmanager”:<日志记录。日志对象在0x1070a6e10>, 'django。要求:<日志记录。日志对象在0x106d61290>, 'django。模板”:<日志记录。日志对象在0x10630dcd0>, 'django。服务器:<日志记录。记录器对象0x106dd6a50>, 'urllib3。连接”:<日志记录。日志记录器对象0x10710a350>,'urllib3。connectionpool”:<日志记录。日志记录器对象0x106e09690>…}
然后为确切的记录器配置级别:
'loggers': {
'': {
'handlers': ['default'],
'level': 'DEBUG',
'propagate': True
},
'urllib3.connectionpool': {
'handlers': ['default'],
'level': 'WARNING',
'propagate' : False
},