오류가 발생하면 사이트 관리자에게 전자 메일로 보내진 컨텍스트 상세 정보에 request.user의 내용을 포함시키고 싶습니다. 요청/출발/쿠키/메타요청을 포함시킬 수있는 방법은 무엇입니까? 사용자 세부 정보를 프로덕션 사이트의 Django의 추적 추적 전자 메일
도움을 주시면 감사하겠습니다.
오류가 발생하면 사이트 관리자에게 전자 메일로 보내진 컨텍스트 상세 정보에 request.user의 내용을 포함시키고 싶습니다. 요청/출발/쿠키/메타요청을 포함시킬 수있는 방법은 무엇입니까? 사용자 세부 정보를 프로덕션 사이트의 Django의 추적 추적 전자 메일
도움을 주시면 감사하겠습니다.
때문에, 당신은 당신이 대규모 도움이되었다
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)
는 나는 당신에게 몇 가지 아이디어를 제공 바랍니다! process_exception 미들웨어가 요청 객체를 전달되는
을 request.META을 원하는대로 정보 덕분에 추가 할 수 있습니다 : 불행하게도 당신은 BaseHandler이 오류를 처리하기 위해 계속 멈출 수 없다 그래서 당신은 HTTPResponse를 반환하지 않으면 당신에게 이메일을 보냅니다 ... 그리고 각 오류에 대한 두 개의 이메일을 받고 과잉입니다 –
오, 아참. 관리자는 자동 이메일을 중지하기 위해 관리자를 공란으로 만드는 것이 좋습니다. 그래야 작동하지 않습니다. 그래도 좋은 솔루션! 그것은 지저분한 청소부입니다. –
+1, 좋습니다. –
최근의 Django를 사용하면 꽤 잘 인쇄되지 않는 게으른 객체를 얻을 수 있기 때문에'.username'을 사용합니다. – Tobu