我想在发生错误时通过电子邮件发送给站点管理员的上下文详细信息中包含request.user的内容,以及追溯和请求.GET/POST/COOKIES/META如何包含请求。用户详细信息在Django的生产站点的追溯电子邮件中
任何帮助表示赞赏。
我想在发生错误时通过电子邮件发送给站点管理员的上下文详细信息中包含request.user的内容,以及追溯和请求.GET/POST/COOKIES/META如何包含请求。用户详细信息在Django的生产站点的追溯电子邮件中
任何帮助表示赞赏。
因为process_exception中间件被传入的请求对象,你可以添加你喜欢的任何信息,以request.META
class ErrorMiddleware(object):
"""
Alter HttpRequest objects on Error
"""
def process_exception(self, request, exception):
"""
Add user details.
"""
request.META['USER'] = request.user.username
制作一个具有process_exception
方法的中间件。 http://docs.djangoproject.com/en/dev/topics/http/middleware/#process-exception
import sys
import traceback
from django.conf import settings
from django.core.mail import mail_admins
class ProcessExceptionMiddleware(object):
def process_exception(self, request, exception):
if not settings.DEBUG:
msg = '\n\n'.join([request.user, request.GET, request.POST, \
request.COOKIES, request.META, traceback.format_exc(*sys.exc_info())])
mail_admins("Error!", msg)
我希望给你一些想法!
这是大量的帮助,谢谢:)不幸的是,你不能阻止BaseHandler继续处理错误并因此发送给你一个电子邮件,除非你返回一个HTTPResponse ...并获得两个电子邮件的每个错误是过度杀伤 – 2011-02-09 14:46:48
哦,哎。文档甚至建议让管理员空白以停止自动发送电子邮件,这样你就是对的,这是行不通的。不错的解决方案!这是一个很干净的地狱。 – 2011-02-09 14:56:24