python – Raven的SentryHandler将StreamHandler输出抑制为文件
发布时间:2020-12-16 21:40:51 所属栏目:Python 来源:网络整理
导读:我有一个普通的 python(非Django)项目,我正在尝试 tie Raven into the logging setup. 在我们当前的设置下,我们使用简单的日志配置: import logginglogging.basicConfig(format='long detailed format',level=logging.DEBUG) 然后将输出重定向到日志文件;这
我有一个普通的
python(非Django)项目,我正在尝试
tie Raven into the logging setup.
在我们当前的设置下,我们使用简单的日志配置: 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)) 错误正在成功发送到Sentry,但我现在只获得一行文件输出: DEBUG: Configuring Raven for host: <DSN url> 所有其他文件输出 – 从logging.debug到logging.error – 正在被抑制. 如果我评论setup_logging行,我得到文件输出但没有Sentry错误.我究竟做错了什么? 解决方法
事实证明这是一个草率的代码.我们在启动执行路径的其他地方有一些黑客重新初始化日志记录:
logging.root.removeHandler(logging.root.handlers[0]) # Undo previous basicConfig logging.basicConfig(format='same long format',level=logging.DEBUG) 但是,由于如果logging.root具有现有处理程序,logging.basicConfig不执行任何操作,这只是删除了流处理程序,离开了sentry处理程序,并导致basicConfig然后充当no-op,这意味着我们完全丢失了StreamHandler. 删除这些行并只有一个basicConfig和setup_logging调用工作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |