如何在Python中从请求模块中完全删除任何日志记录?我甚至不需要设置关键级别。像这样
import logging
requests_log = logging.getLogger("requests")
requests_log.setLevel(logging.CRITICAL)
但没有任何消息,甚至是CRITICAL。
首先,requests
什么都不记录;只有依赖的urllib3
库可以requests
。该库仅在INFO
和DEBUG
级别记录消息,因此将日志级别设置为logging.CRITICAL
已禁用所有消息:
urllib3_log = logging.getLogger("urllib3")
urllib3_log.setLevel(logging.CRITICAL)
您也可以只禁用传播:
logging.getLogger("urllib3").propagate = False
这足以完全禁用该urllib3
库执行的所有日志记录。
该urllib3
项目已NullHandler()
在项目根记录器上安装了处理程序对象,该对象可以确保即使禁用了传播,该lastResort
处理程序也不会用于未处理的消息。
就是说,如果您不相信以后的版本requests
不会sys.maxint
用作日志级别,并且同时忽略设置a NullHandler()
,则一定NullHandler()
要在项目根记录器对象上添加您自己的对象,然后禁用传播那里:
import logging
requests_log = logging.getLogger("requests")
requests_log.addHandler(logging.NullHandler())
requests_log.propagate = False
现在,requests
层次结构中的所有日志记录都将定向到NullHandler()
实例,并propagate
设置为False
在此处停止日志记录。您可以使用此选项使层次结构中的任何记录器静音。
在我看来,这太过分了,requests
到目前为止尚未发布任何版本使用日志记录,并且该项目配备了有能力的开发人员,如果他们确实添加了日志记录,则他们不太可能会错误地配置日志记录设置。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句