Raven 的 SentryHandler 正在抑制 StreamHandler 输出到文件



我有一个普通的python(非django)项目,我试图将Raven绑定到日志设置中。

在当前的设置中,我们使用一个简单的日志配置:

import logging
logging.basicConfig(format='long detailed format',
                    level=logging.DEBUG)

输出被重定向到日志文件;这会生成一个很好的、详细的日志,我们可以在需要的时候查看。

我们现在想添加Raven的错误日志记录,将其绑定到我们当前的日志设置中,以便logging.error调用导致消息被发送到Sentry服务器。使用以下代码:

from raven import Client
from raven.conf import setup_logging
from raven.handlers.logging import SentryHandler
raven = Client(environ.get('SENTRYURL', ''), site='SITE')
setup_logging(SentryHandler(raven, level=logging.ERROR))

错误被成功地发送到哨兵,但我现在只得到一行文件输出:

DEBUG: Configuring Raven for host: <DSN url>

所有其他文件输出——从logging.debuglogging.error——被抑制。

如果我注释setup_logging行,我得到文件输出,但没有哨兵错误。我做错了什么?

这是一个草率的代码。我们在启动执行路径的其他地方做了一些修改,重新初始化了日志记录:

logging.root.removeHandler(logging.root.handlers[0]) # Undo previous basicConfig
logging.basicConfig(format='same long format',
                    level=logging.DEBUG)

然而,由于logging.basicConfig不做任何事情,如果logging.root有现有的处理程序,这只是删除了流处理程序,留下哨兵处理程序,并导致basicConfig充当无操作,这意味着我们失去了我们的StreamHandler。

删除这些行,只有一个basicConfig和一个setup_logging调用工作。

相关内容

  • 没有找到相关文章

最新更新