src/cm/utils/log.py
author raph
Wed, 03 Mar 2010 10:29:05 +0100
changeset 201 e0032b64c314
permissions -rw-r--r--
add try/except for local timezone conversion to prevent timezone error (mail admins)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
201
e0032b64c314 add try/except for local timezone conversion to prevent timezone error (mail admins)
raph
parents:
diff changeset
     1
from django.conf import settings
e0032b64c314 add try/except for local timezone conversion to prevent timezone error (mail admins)
raph
parents:
diff changeset
     2
from django.core.mail import mail_admins
e0032b64c314 add try/except for local timezone conversion to prevent timezone error (mail admins)
raph
parents:
diff changeset
     3
import sys
e0032b64c314 add try/except for local timezone conversion to prevent timezone error (mail admins)
raph
parents:
diff changeset
     4
e0032b64c314 add try/except for local timezone conversion to prevent timezone error (mail admins)
raph
parents:
diff changeset
     5
def _get_traceback(exc_info):
e0032b64c314 add try/except for local timezone conversion to prevent timezone error (mail admins)
raph
parents:
diff changeset
     6
    import traceback
e0032b64c314 add try/except for local timezone conversion to prevent timezone error (mail admins)
raph
parents:
diff changeset
     7
    return '\n'.join(traceback.format_exception(*(exc_info or sys.exc_info())))
e0032b64c314 add try/except for local timezone conversion to prevent timezone error (mail admins)
raph
parents:
diff changeset
     8
e0032b64c314 add try/except for local timezone conversion to prevent timezone error (mail admins)
raph
parents:
diff changeset
     9
def error_mail_admins(subject='Error', request=None):
e0032b64c314 add try/except for local timezone conversion to prevent timezone error (mail admins)
raph
parents:
diff changeset
    10
    if request:        
e0032b64c314 add try/except for local timezone conversion to prevent timezone error (mail admins)
raph
parents:
diff changeset
    11
        subject = 'Error (%s IP): %s' % ((request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS and 'internal' or 'EXTERNAL'), request.path)
e0032b64c314 add try/except for local timezone conversion to prevent timezone error (mail admins)
raph
parents:
diff changeset
    12
        
e0032b64c314 add try/except for local timezone conversion to prevent timezone error (mail admins)
raph
parents:
diff changeset
    13
    try:
e0032b64c314 add try/except for local timezone conversion to prevent timezone error (mail admins)
raph
parents:
diff changeset
    14
        request_repr = repr(request)
e0032b64c314 add try/except for local timezone conversion to prevent timezone error (mail admins)
raph
parents:
diff changeset
    15
    except:
e0032b64c314 add try/except for local timezone conversion to prevent timezone error (mail admins)
raph
parents:
diff changeset
    16
        request_repr = "Request repr() unavailable"
e0032b64c314 add try/except for local timezone conversion to prevent timezone error (mail admins)
raph
parents:
diff changeset
    17
        
e0032b64c314 add try/except for local timezone conversion to prevent timezone error (mail admins)
raph
parents:
diff changeset
    18
    exc_info = sys.exc_info()
e0032b64c314 add try/except for local timezone conversion to prevent timezone error (mail admins)
raph
parents:
diff changeset
    19
    message = "%s\n\n%s" % (_get_traceback(exc_info), request_repr)
e0032b64c314 add try/except for local timezone conversion to prevent timezone error (mail admins)
raph
parents:
diff changeset
    20
    
e0032b64c314 add try/except for local timezone conversion to prevent timezone error (mail admins)
raph
parents:
diff changeset
    21
    mail_admins(subject, message, fail_silently=True)