src/cm/utils/log.py
changeset 201 e0032b64c314
equal deleted inserted replaced
200:e5e8cdfde782 201:e0032b64c314
       
     1 from django.conf import settings
       
     2 from django.core.mail import mail_admins
       
     3 import sys
       
     4 
       
     5 def _get_traceback(exc_info):
       
     6     import traceback
       
     7     return '\n'.join(traceback.format_exception(*(exc_info or sys.exc_info())))
       
     8 
       
     9 def error_mail_admins(subject='Error', request=None):
       
    10     if request:        
       
    11         subject = 'Error (%s IP): %s' % ((request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS and 'internal' or 'EXTERNAL'), request.path)
       
    12         
       
    13     try:
       
    14         request_repr = repr(request)
       
    15     except:
       
    16         request_repr = "Request repr() unavailable"
       
    17         
       
    18     exc_info = sys.exc_info()
       
    19     message = "%s\n\n%s" % (_get_traceback(exc_info), request_repr)
       
    20     
       
    21     mail_admins(subject, message, fail_silently=True)