如何在Python中禁用标准错误流上的logging?这不起作用:
import logging
logger = logging.getLogger()
logger.removeHandler(sys.stderr)
logger.warning('foobar') # emits 'foobar' on sys.stderr
发布于 2010-02-16 01:04:33
我找到了一个解决方案:
logger = logging.getLogger('my-logger')
logger.propagate = False
# now if you use logger it will not log to console.
这将防止日志记录发送到上层记录器,包括控制台日志记录。
发布于 2010-06-25 14:42:25
我使用:
logger = logging.getLogger()
logger.disabled = True
... whatever you want ...
logger.disabled = False
发布于 2011-12-14 03:59:22
这里有一些非常好的答案,但显然最简单的没有太多考虑(只来自于infinito)。
root_logger = logging.getLogger()
root_logger.disabled = True
这会禁用根记录器,从而禁用所有其他记录器。我还没有真正测试过,但它也应该是最快的。
在python2.7的日志代码中,我看到了这一点
def handle(self, record):
"""
Call the handlers for the specified record.
This method is used for unpickled records received from a socket, as
well as those created locally. Logger-level filtering is applied.
"""
if (not self.disabled) and self.filter(record):
self.callHandlers(record)
这意味着当它被禁用时,不会调用任何处理程序,并且它应该比过滤到一个非常高的值或设置一个无操作处理程序更有效。
https://stackoverflow.com/questions/2266646
复制相似问题