首页 文章

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

提问于
浏览
1

临时禁用日志记录

我试图在Python中编写一个新的日志处理程序,它将日志消息的json表示发布到HTTP endpoints ,我正在使用请求库进行发布 . 问题是请求和urllib3(由请求使用)日志,并且它们的 Logger 已传播= True,这意味着它们记录的日志将传播到任何父 Logger . 如果我的日志处理程序的用户创建了一个没有给出名字的 Logger ,它将成为根 Logger ,因此它将收到此消息,从而导致无限循环的日志记录 . 我对如何解决这个问题感到有点迷茫,我有两个看起来很脆弱的建议 .

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

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

如果请求库要么用其他东西替换urllib3,要么更改其 Logger 的名称,这两个都会破坏 . 在多线程或多进程的情况下,方法1似乎也可能存在问题 .

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

有什么建议?

1 回答

  • 1

    导入os.devnull并将其设置为父 Logger 的默认文件处理程序可能吗?

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

相关问题