diff options
Diffstat (limited to 'debug_toolbar/panels/logger.py')
| -rw-r--r-- | debug_toolbar/panels/logger.py | 42 |
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) - |
