#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.