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

时间:2019-04-18 11:35:08

标签: django django-rest-framework sentry

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

我找到了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"}

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

@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({...})

有人可以给我一些建议吗? :)

1 个答案:

答案 0 :(得分:0)

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

关于一般如何在Django应用中添加数据的问题,您基本上是在寻找在每个视图之前运行的内容。 Django中间件适用于此:

def sentry_middleware(get_response):

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

        response = get_response(request)
        return response

    return middleware

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