aboutsummaryrefslogtreecommitdiffstats
path: root/debug_toolbar/panels/logger.py
diff options
context:
space:
mode:
Diffstat (limited to 'debug_toolbar/panels/logger.py')
-rw-r--r--debug_toolbar/panels/logger.py42
1 files changed, 19 insertions, 23 deletions
diff --git a/debug_toolbar/panels/logger.py b/debug_toolbar/panels/logger.py
index 5e82a13..55ae9bd 100644
--- a/debug_toolbar/panels/logger.py
+++ b/debug_toolbar/panels/logger.py
@@ -4,7 +4,6 @@ try:
import threading
except ImportError:
threading = None
-from django.template.loader import render_to_string
from django.utils.translation import ugettext_lazy as _
from debug_toolbar.panels import DebugPanel
@@ -15,15 +14,15 @@ class LogCollector(object):
raise NotImplementedError("threading module is not available, \
the logging panel cannot be used without it")
self.records = {} # a dictionary that maps threads to log records
-
+
def add_record(self, record, thread=None):
# Avoid logging SQL queries since they are already in the SQL panel
# TODO: Make this check whether SQL panel is enabled
if record.get('channel', '') == 'django.db.backends':
return
-
+
self.get_records(thread).append(record)
-
+
def get_records(self, thread=None):
"""
Returns a list of records for the provided thread, of if none is provided,
@@ -34,7 +33,7 @@ class LogCollector(object):
if thread not in self.records:
self.records[thread] = []
return self.records[thread]
-
+
def clear_records(self, thread=None):
if thread is None:
thread = threading.currentThread()
@@ -46,7 +45,7 @@ class ThreadTrackingHandler(logging.Handler):
def __init__(self, collector):
logging.Handler.__init__(self)
self.collector = collector
-
+
def emit(self, record):
record = {
'message': record.getMessage(),
@@ -76,7 +75,7 @@ if logbook_supported:
def __init__(self, collector):
logbook.handlers.Handler.__init__(self, bubble=True)
self.collector = collector
-
+
def emit(self, record):
record = {
'message': record.message,
@@ -87,40 +86,37 @@ if logbook_supported:
'channel': record.channel,
}
self.collector.add_record(record)
-
-
+
+
logbook_handler = LogbookThreadTrackingHandler(collector)
logbook_handler.push_application() # register with logbook
class LoggingPanel(DebugPanel):
name = 'Logging'
+ template = 'debug_toolbar/panels/logger.html'
has_content = True
-
+
def process_request(self, request):
collector.clear_records()
-
+
+ def process_response(self, request, response):
+ records = self.get_and_delete()
+ self.record_stats({'records': records})
+
def get_and_delete(self):
records = collector.get_records()
collector.clear_records()
return records
-
+
def nav_title(self):
return _("Logging")
-
+
def nav_subtitle(self):
# FIXME l10n: use ngettext
return "%s message%s" % (len(collector.get_records()), (len(collector.get_records()) == 1) and '' or 's')
-
+
def title(self):
return _('Log Messages')
-
+
def url(self):
return ''
-
- def content(self):
- records = self.get_and_delete()
- context = self.context.copy()
- context.update({'records': records})
-
- return render_to_string('debug_toolbar/panels/logger.html', context)
-