我想在發生錯誤時通過電子郵件發送給站點管理員的上下文詳細信息中包含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