aboutsummaryrefslogtreecommitdiffstats
path: root/debug_toolbar/panels/logger.py
diff options
context:
space:
mode:
authorDavid Cramer2011-09-16 01:09:01 -0700
committerDavid Cramer2011-09-16 01:09:01 -0700
commit8278bb0f24d925288740c23a2315e9c5a27a3290 (patch)
tree5dce59d9bd497a19e6cbaf8aebfc697200368b11 /debug_toolbar/panels/logger.py
parent5a3813d2bb4fb63d66b1b8a13edb8354b36a28b4 (diff)
parent69f1c7733e29ee9ea3e4670f2183deb52f58a871 (diff)
downloaddjango-debug-toolbar-8278bb0f24d925288740c23a2315e9c5a27a3290.tar.bz2
Merge pull request #206 from lincolnloop/stats_decouple
Decouple statistics from presentation
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)
-