Commit 304a50d8 authored by Adrian Holovaty's avatar Adrian Holovaty
Browse files

Fixed #15603 -- Changed the traceback error e-mails not to use HTML by...

Fixed #15603 -- Changed the traceback error e-mails not to use HTML by default. It's now configurable with an 'include_html' parameter to AdminEmailHandler. Thanks, kmtracey

git-svn-id: http://code.djangoproject.com/svn/django/trunk@15850 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent 2ee7cfcf
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -48,7 +48,11 @@ if not logger.handlers:
    logger.addHandler(NullHandler())

class AdminEmailHandler(logging.Handler):
    """An exception log handler that emails log entries to site admins
    def __init__(self, include_html=False):
        logging.Handler.__init__(self)        
        self.include_html = include_html

    """An exception log handler that e-mails log entries to site admins.

    If the request is passed as the first argument to the log record,
    request data will be provided in the
@@ -88,6 +92,6 @@ class AdminEmailHandler(logging.Handler):

        message = "%s\n\n%s" % (stack_trace, request_repr)
        reporter = ExceptionReporter(request, is_email=True, *exc_info)
        html_message = reporter.get_traceback_html()
        html_message = self.include_html and reporter.get_traceback_html() or None
        mail.mail_admins(subject, message, fail_silently=True,
                         html_message=html_message)
+27 −2
Original line number Diff line number Diff line
@@ -468,13 +468,38 @@ Handlers
Django provides one log handler in addition to those provided by the
Python logging module.

.. class:: AdminEmailHandler()
.. class:: AdminEmailHandler([include_html=False])

    This handler sends an e-mail to the site admins for each log
    message it receives.

    If the log record contains a 'request' attribute, the full details
    If the log record contains a ``request`` attribute, the full details
    of the request will be included in the e-mail.

    If the log record contains stack trace information, that stack
    trace will be included in the e-mail.

    The ``include_html`` argument of ``AdminEmailHandler`` is used to
    control whether the traceback e-mail includes an HTML attachment
    containing the full content of the debug Web page that would have been
    produced if ``DEBUG`` were ``True``. To set this value in your
    configuration, include it in the handler definition for
    ``django.utils.log.AdminEmailHandler``, like this::

        'handlers': {
            'mail_admins': {
                'level': 'ERROR',
                'class': 'django.utils.log.AdminEmailHandler',
                'include_html': True,
            }
        },

    Note that this HTML version of the e-mail contains a full traceback,
    with names and values of local variables at each level of the stack, plus
    the values of your Django settings. This information is potentially very
    sensitive, and you may not want to send it over e-mail. Consider using
    something such as `django-sentry`_ to get the best of both worlds -- the
    rich information of full tracebacks plus the security of *not* sending the
    information over e-mail.

.. _django-sentry: http://pypi.python.org/pypi/django-sentry