Django Error Reporting - How to know which user triggered the error?
Is there a way I can customize Django error reporting so when it emails me it lets me know which user triggered the error?
I'm in Django 1.2 if i开发者_运维技巧t matters.
Much Thanks in advance!
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
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
.
I highly recommend http://readthedocs.org/docs/sentry/en/latest/index.html for the job.
精彩评论