我导入了许多第三方模块,这些模块中具有各种日志记录级别(ERROR,WARNING,INFO,DEBUG)。我想更改给定日志语句的日志级别。
例如,我可以做这样的事情:
import logging
import requests
logging.basicConfig()
logging.getLogger().setLevel(logging.NOTSET)
requests.get('http://www.google.com')
这将输出如下内容:
DEBUG:requests.packages.urllib3.connectionpool:Starting new HTTP connection (1): www.google.com
DEBUG:requests.packages.urllib3.connectionpool:http://www.google.com:80 "GET /
HTTP/1.1" 200 4674
<Response [200]>
您可以看到这来自此source code。您可以清楚地看到它正在调用log.debug
,它对应于上面的DEBUG消息。如果我想如何将其更改为log.info
?
请注意,我知道setLevel
,它将禁止某些级别以下的消息。那不是我想要的。
次优解决方案#1 我可以扩展requests
模块,并覆盖该特定功能。我不想维持
次优解决方案#2 ,我可以覆盖该模块CRITICAL中的DEBUG常量:
requests.packages.urllib3.logging.DEBUG = requests.packages.urllib3.logging.CRITICAL
requests.get('http://www.google.com')
CRITICAL:requests.packages.urllib3.connectionpool:Starting new HTTP connection (1): www.google.com
CRITICAL:requests.packages.urllib3.connectionpool:http://www.google.com:80 "GET / HTTP/1.1" 200 4683
<Response [200]>
完成此任务的最佳方法是什么?