Python Logger更改第三方模块的日志级别

时间:2018-07-11 21:14:27

标签: python logging

我导入了许多第三方模块,这些模块中具有各种日志记录级别(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]>

完成此任务的最佳方法是什么?

0 个答案:

没有答案