首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在标准错误流上禁用日志记录?

如何在标准错误流上禁用日志记录?
EN

Stack Overflow用户
提问于 2010-02-15 22:48:06
回答 11查看 210.2K关注 0票数 182

如何在Python中禁用标准错误流上的logging?这不起作用:

代码语言:javascript
复制
import logging

logger = logging.getLogger()
logger.removeHandler(sys.stderr)
logger.warning('foobar')  # emits 'foobar' on sys.stderr
EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2010-02-16 01:04:33

我找到了一个解决方案:

代码语言:javascript
复制
logger = logging.getLogger('my-logger')
logger.propagate = False
# now if you use logger it will not log to console.

这将防止日志记录发送到上层记录器,包括控制台日志记录。

票数 210
EN

Stack Overflow用户

发布于 2010-06-25 14:42:25

我使用:

代码语言:javascript
复制
logger = logging.getLogger()
logger.disabled = True
... whatever you want ...
logger.disabled = False
票数 121
EN

Stack Overflow用户

发布于 2011-12-14 03:59:22

这里有一些非常好的答案,但显然最简单的没有太多考虑(只来自于infinito)。

代码语言:javascript
复制
root_logger = logging.getLogger()
root_logger.disabled = True

这会禁用根记录器,从而禁用所有其他记录器。我还没有真正测试过,但它也应该是最快的。

在python2.7的日志代码中,我看到了这一点

代码语言:javascript
复制
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)

这意味着当它被禁用时,不会调用任何处理程序,并且它应该比过滤到一个非常高的值或设置一个无操作处理程序更有效。

票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2266646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档