mirror of
https://github.com/django/django.git
synced 2024-12-01 15:42:04 +01:00
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
This commit is contained in:
parent
2ee7cfcf1c
commit
304a50d8ca
@ -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)
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user