我正在尝试为我当前的网络应用设置Sentry。它可以是configured to act as a logger。
但是,我有一个看起来像这样的异常视图:
@view_config(context=Exception,
renderer='hitchedup:templates/errors/500.html')
def error_view(exc, request):
"""Display a friendly error message"""
return {}
这个想法是,无论何时网站上发生任何异常,我都可以向用户发送友好的消息。
但是,我如何仍然将错误传递给记录器?现在,Exception视图捕获所有异常,但之后它们永远不会到达记录器。
我尝试在异常视图中提升并捕获exc
内联,然后直接通过客户端将其发送到Sentry,但是如果我发现异常,我将无法获得完整的堆栈跟踪最初提出来。
如何获得友好的500页并且仍然有良好的日志记录和错误报告?
答案 0 :(得分:4)
裸raise
关键字是故障单。
不使用日志记录,而是使用友好消息捕获视图中的异常。然后,使用raise
而不使用参数,这会引发原始异常。捕获异常并使用Sentry客户端捕获它并传递它。
最终视图如下所示:
from raven.base import Client
from pyramid.view import view_config
@view_config(context=Exception,
renderer='hitchedup:templates/errors/500.html')
def error(context, request):
"""Display an error message and record it in Sentry."""
client = Client()
try:
raise
except Exception:
client.captureException()
return {}