Django 如何在发生错误时将用户信息添加到 Sentry 的报告中?

coc*_*rry 2 django sentry django-rest-framework

我使用 django-restful 框架,并且我想在 ModelViewSet 中发生错误时将用户信息添加到 Sentry 的报告中。

我发现这个哨兵文档:https ://docs.sentry.io/enriching-error-data/context/ ? _ga = 1.219964441.1220115692.1472094716%3F_ga & platform = python#capturing-the-user

它给出了一些代码如下:

from sentry_sdk import configure_scope

with configure_scope() as scope:
    scope.user = {"email": "john.doe@example.com"}
Run Code Online (Sandbox Code Playgroud)

但我不知道如何正确使用它。我认为存在比以下更好的方法:

@list_route()
def fun_xxx(self, request, *args, **kwargs):
  user = request.user
  with configure_scope() as scope:
     scope.user = {"id": user.id,......}

  ...some code may cause an error...

  return Response({...})
Run Code Online (Sandbox Code Playgroud)

谁能给我一些建议?:)

Mar*_*zer 5

如评论中所述,Django集成将自动附加此特定数据。

至于如何在 Django 应用程序中一般添加数据的问题,您基本上是在寻找在每个视图之前运行的东西。一个 Django 中间件适合这个:

def sentry_middleware(get_response):

    def middleware(request):
        with configure_scope() as scope:
            ...

        response = get_response(request)
        return response

    return middleware
Run Code Online (Sandbox Code Playgroud)

https://docs.djangoproject.com/en/2.2/topics/http/middleware/