Python 乌鸦';s SentryHandler正在禁止StreamHandler输出到文件
我有一个简单的python(非Django)项目,我正在尝试 在当前设置下,我们使用一个简单的日志配置:Python 乌鸦';s SentryHandler正在禁止StreamHandler输出到文件,python,logging,sentry,raven,Python,Logging,Sentry,Raven,我有一个简单的python(非Django)项目,我正在尝试 在当前设置下,我们使用一个简单的日志配置: import logging logging.basicConfig(format='long detailed format', level=logging.DEBUG) 然后将输出重定向到日志文件;这将生成一个很好的详细日志,我们可以在需要时查看它 我们现在想添加Raven的错误日志记录,将其绑定到当前的日志记录设置中,以便日志记录.error调
import logging
logging.basicConfig(format='long detailed format',
level=logging.DEBUG)
然后将输出重定向到日志文件;这将生成一个很好的详细日志,我们可以在需要时查看它
我们现在想添加Raven的错误日志记录,将其绑定到当前的日志记录设置中,以便日志记录.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>
调试:为主机配置Raven:
所有其他文件输出——从logging.debug
到logging.error
——都被抑制
如果我对
setup\u logging
行进行注释,我会得到文件输出,但没有哨兵错误。我做错了什么?这是一个草率的代码。我们在启动执行路径的其他地方遇到了一些黑客攻击,重新初始化了日志记录:
logging.root.removeHandler(logging.root.handlers[0]) # Undo previous basicConfig
logging.basicConfig(format='same long format',
level=logging.DEBUG)
但是,由于logging.basicConfig
如果logging.root
有现有的处理程序,则不会执行任何操作,这只是删除了流处理程序,留下了sentry处理程序,并导致basicConfig
随后充当no op,这意味着我们完全失去了StreamHandler
删除这些行,并且只有一个basicConfig
和一个setup\u logging
调用有效