aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbkonkle2011-09-12 12:07:01 -0500
committerbkonkle2011-09-12 12:07:01 -0500
commit12decd75ddaf805b8a2f333102f2752161338eb9 (patch)
treec03808e6df2fa0d352c10762153f35ddac6fec65
parent5f7a6aa2658c019eddf5696fec051199fe0e64ec (diff)
downloaddjango-debug-toolbar-12decd75ddaf805b8a2f333102f2752161338eb9.tar.bz2
Updated the logger panel
-rw-r--r--debug_toolbar/panels/logger.py39
1 files changed, 22 insertions, 17 deletions
diff --git a/debug_toolbar/panels/logger.py b/debug_toolbar/panels/logger.py
index 5e82a13..ba34700 100644
--- a/debug_toolbar/panels/logger.py
+++ b/debug_toolbar/panels/logger.py
@@ -7,6 +7,7 @@ except ImportError:
from django.template.loader import render_to_string
from django.utils.translation import ugettext_lazy as _
from debug_toolbar.panels import DebugPanel
+from debug_toolbar.middleware import DebugToolbarMiddleware
class LogCollector(object):
@@ -15,15 +16,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 +35,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 +47,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 +77,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,
@@ -88,39 +89,43 @@ if logbook_supported:
}
self.collector.add_record(record)
-
+
logbook_handler = LogbookThreadTrackingHandler(collector)
logbook_handler.push_application() # register with logbook
class LoggingPanel(DebugPanel):
name = 'Logging'
has_content = True
-
+
def process_request(self, request):
collector.clear_records()
-
+
+ def process_response(self, request, response):
+ records = self.get_and_delete()
+ self.stats = {'records': records}
+ toolbar = DebugToolbarMiddleware.get_current()
+ toolbar.stats['logger'] = self.stats
+
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})
-
+ context.update(self.stats)
return render_to_string('debug_toolbar/panels/logger.html', context)