2011-02-09 3 views

답변

7

때문에, 당신은 당신이 대규모 도움이되었다

class ErrorMiddleware(object): 
    """ 
    Alter HttpRequest objects on Error 
    """ 

    def process_exception(self, request, exception): 
     """ 
     Add user details. 
     """ 
     request.META['USER'] = request.user.username 
+0

+1, 좋습니다. –

+0

최근의 Django를 사용하면 꽤 잘 인쇄되지 않는 게으른 객체를 얻을 수 있기 때문에'.username'을 사용합니다. – Tobu

2

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 미들웨어가 요청 객체를 전달되는

+0

을 request.META을 원하는대로 정보 덕분에 추가 할 수 있습니다 : 불행하게도 당신은 BaseHandler이 오류를 처리하기 위해 계속 멈출 수 없다 그래서 당신은 HTTPResponse를 반환하지 않으면 당신에게 이메일을 보냅니다 ... 그리고 각 오류에 대한 두 개의 이메일을 받고 과잉입니다 –

+0

오, 아참. 관리자는 자동 이메일을 중지하기 위해 관리자를 공란으로 만드는 것이 좋습니다. 그래야 작동하지 않습니다. 그래도 좋은 솔루션! 그것은 지저분한 청소부입니다. –