1

現在の Web アプリ用にSentryをセットアップしようとしています。ロガーとして機能するように構成できます。

ただし、次のような例外ビューがあります。

@view_config(context=Exception,
             renderer='hitchedup:templates/errors/500.html')
def error_view(exc, request):
    """Display a friendly error message"""
    return {}

サイトで例外が発生するたびに、ユーザーにフレンドリーなメッセージを配信できるという考えです。

しかし、どうすればエラーをロガーに渡すことができますか? 現在、例外ビューはすべての例外をキャッチしますが、ロガーには到達しません。

例外ビューでインラインで発生およびキャッチ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 に答える