Django Как добавить информацию о пользователе в отчет Sentry при возникновении ошибки?

#django #django-rest-framework #sentry

#django #django-rest-framework #sentry

Вопрос:

Я использую фреймворк django-restful и хочу добавить информацию о пользователе в отчет Sentry, когда произошла ошибка в ModelViewSet.

Я нахожу этот документ Sentry: https://docs.sentry.io/enriching-error-data/context/?_ga=1.219964441.1220115692.1472094716?_gaamp;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. Если вы используете клиент Sentry Django , эти данные включаются автоматически.

Ответ №1:

Как упоминалось в комментариях, интеграция 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/

Комментарии:

1. Возможно, раньше так и было, но интеграция Django Sentry в настоящее время не получает информацию о пользователе по умолчанию. Ответ @Charanjit Singh правильный.

Ответ №2:

Как упоминалось здесь: https://docs.sentry.io/platforms/python/guides/django/#configure

Установить:

     # If you wish to associate users to errors (assuming you are using
    # django.contrib.auth) you may enable sending PII data.

    send_default_pii=True,
 

во время настройки sentry в Django.

PII: Личная идентифицируемая информация

P.S. Не забудьте включить django.contrib.auth в свои installed_apps.