gpt4 book ai didi

python - 在 Python 中临时完全禁用日志记录

转载 作者:太空宇宙 更新时间:2023-11-03 14:52:41 25 4
gpt4 key购买 nike

暂时完全禁用日志记录

我正在尝试用 Python 编写一个新的日志处理程序,它将日志消息的 json 表示形式发布到 HTTP 端点,并且我正在使用请求库进行发布。问题是 request 和 urllib3 (由 request 使用)都会记录日志,并且它们的记录器具有propagate=True,这意味着它们记录的日志将传播到任何父记录器。如果我的日志处理程序的用户创建一个未指定名称的记录器,它将成为根记录器,因此它将收到此消息,从而导致日志记录的无限循环。我对如何解决这个问题有点迷失,我有两个建议,但似乎都很脆弱。

1) 获取“reguest”和“urllib3”记录器,将其传播值设置为 false,在将传播值设置回旧值之前发布日志消息。

2) 检查传入记录的名称是否包含“.request”或“.urllib3”,如果包含则忽略该记录。

如果请求库用其他内容替换 urllib3 或更改其记录器的名称,这两者都会严重破坏。在多线程或多进程情况下,方法 1 似乎也可能会出现问题。

我想要的是某种方法从某个点禁用当前线程的所有日志记录,然后在我们发布消息后再次启用它,但我不知道有什么方法可以做到这一点。

有什么建议吗?

最佳答案

导入os.devnull并将其设置为父记录器的默认文件处理程序?

我通常将所有日志刷新到 devnull,除了明确设置的日志(不知道这是一个好还是坏的做法)。

关于python - 在 Python 中临时完全禁用日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45799786/

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