Отчеты об ошибках Django - Как узнать, какой пользователь вызвал ошибку? - PullRequest
9 голосов
/ 13 июля 2011

Можно ли как-то настроить отчеты об ошибках Django, чтобы при отправке мне по электронной почте сообщать, какой пользователь вызвал ошибку?

Я в Django 1.2, если это имеет значение.

Большое спасибо заранее!

Ответы [ 2 ]

14 голосов
/ 13 июля 2011

Если вы не хотите использовать часовой, вы можете использовать это простое промежуточное программное обеспечение, чтобы прикрепить информацию пользователя к сообщению об ошибке:

# source: https://gist.github.com/646372
class ExceptionUserInfoMiddleware(object):
    """
    Adds user details to request context on receiving an exception, so that they show up in the error emails.

    Add to settings.MIDDLEWARE_CLASSES and keep it outermost(i.e. on top if possible). This allows
    it to catch exceptions in other middlewares as well.
    """

    def process_exception(self, request, exception):
        """
        Process the exception.

        :Parameters:
           - `request`: request that caused the exception
           - `exception`: actual exception being raised
        """

        try:
            if request.user.is_authenticated():
                request.META['USERNAME'] = str(request.user.username)
                request.META['USER_EMAIL'] = str(request.user.email)
        except:
            pass

Вы можете просто поместить этот класс в файл * .py в любом месте ниже вашего проекта Django и добавить ссылку на MIDDLEWARE_CLASSES. То есть если вы поместите его в файл «middleware» в корне проекта (где находится ваш settings.py), вы просто добавите middleware.ExceptionUserInfoMiddleware.

2 голосов
/ 13 июля 2011

Я настоятельно рекомендую http://readthedocs.org/docs/sentry/en/latest/index.html для работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...