gpt4 book ai didi

python - 如何从 Python 中的请求模块中完全删除任何日志记录

转载 作者:行者123 更新时间:2023-11-28 19:39:27 25 4
gpt4 key购买 nike

如何从 Python 的请求模块中完全删除任何日志记录?我什至不需要设置 CRITICAL 级别。像这样

import logging
requests_log = logging.getLogger("requests")
requests_log.setLevel(logging.CRITICAL)

但没有任何消息,甚至是 CRITICAL。

最佳答案

首先,requests 不记录任何内容;只有 requests 依赖的 urllib3 库可以。该库仅记录 INFODEBUG 级别的消息,因此将日志级别设置为 logging.CRITICAL 已禁用所有消息:

urllib3_log = logging.getLogger("urllib3")
urllib3_log.setLevel(logging.CRITICAL)

您也可以只禁用传播:

logging.getLogger("urllib3").propagate = False

这足以完全禁用 urllib3 库执行的所有日志记录。

urllib3 项目安装了一个 NullHandler()项目根记录器上的处理程序对象,它确保 lastResort handler不用于未处理的消息,即使传播已被禁用。

就是说,如果您不相信 requests 的 future 版本不会使用 sys.maxint 作为日志级别,同时忽略设置一个 NullHandler(),然后一定要在项目根记录器对象上添加您自己的 NullHandler(),然后在那里禁用传播:

import logging

requests_log = logging.getLogger("requests")
requests_log.addHandler(logging.NullHandler())
requests_log.propagate = False

现在 requests 层次结构中的所有日志记录都将定向到 NullHandler() 实例,并将 propagate 设置为 False 记录在那里停止。您可以使用它来使层次结构中的任何记录器静音。

在我看来,这太过分了,到目前为止,还没有任何requests 版本使用日志记录,而且该项目配备了有能力的开发人员,如果他们确实添加了日志记录,他们不太可能错误配置日志记录设置。

关于python - 如何从 Python 中的请求模块中完全删除任何日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24344045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com