1

我正在尝试为我当前的网络应用程序设置哨兵。它可以配置为充当记录器

但是,我有一个看起来像这样的异常视图:

@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 页,并且仍然具有良好的日志记录和错误报告?

4

1 回答 1

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 {}
于 2014-02-16T00:47:27.227 回答