summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Holovaty <adrian@holovaty.com>2011-03-16 04:13:57 +0000
committerAdrian Holovaty <adrian@holovaty.com>2011-03-16 04:13:57 +0000
commit304a50d8cac1d185685d212867a2d449c5378e9e (patch)
tree6c34bbec041bec75e3e957a8ce3438600b39f652
parent2ee7cfcf1c671681e46b685f268797d175ecff20 (diff)
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
-rw-r--r--django/utils/log.py8
-rw-r--r--docs/topics/logging.txt29
2 files changed, 33 insertions, 4 deletions
diff --git a/django/utils/log.py b/django/utils/log.py
index 784035b3cf..763e667c57 100644
--- a/django/utils/log.py
+++ b/django/utils/log.py
@@ -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)
diff --git a/docs/topics/logging.txt b/docs/topics/logging.txt
index 618decdd70..309ea364b4 100644
--- a/docs/topics/logging.txt
+++ b/docs/topics/logging.txt
@@ -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