且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Django错误报告 - 如何知道哪个用户触发了错误?

更新时间:2023-02-13 20:17:55

不想使用哨兵你可以使用这个简单的中间件来附加用户信息的错误邮件:

If you don't want to use sentry you can use this simple middleware to attache the user-infos to the error mail:

# 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

您可以简单地将此类放在Django项目下方的* .py文件中,并添加引用 MIDDLEWARE_CLASSES 。即如果你把它放在项目根目录(你的settings.py中)的文件中间件中,你只需添加 middleware.ExceptionUserInfoMiddleware

You can simply put this class in a *.py file anywhere below your Django project and add a reference to MIDDLEWARE_CLASSES. I.e. if you put it in a file "middleware" in the project root (where your settings.py is) , you simply add middleware.ExceptionUserInfoMiddleware.