Source code for alogging.formatters.django_sql
import logging
import sqlparse
HAS_PYGMENTS = True
try:
from .django_sql_color import DjangoDbSqlColorFormatter
except ImportError:
HAS_PYGMENTS = False
# TODO: Could add a filter that uses sqlparse to extract record attributes
# for table, statement type, etc.
[docs]class DjangoDbSqlPlainFormatter(logging.Formatter):
'''pretty print django.db sql'''
def __init__(self, fmt=None, datefmt=None, options=None, style='%'):
super(DjangoDbSqlPlainFormatter, self).__init__(fmt=fmt,
datefmt=datefmt,
style=style)
self.options = options or {'reindent': True,
'keyword_case': 'upper'}
[docs] def format(self, record):
pretty_sql = sqlparse.format(record.sql,
**self.options)
record.sql = pretty_sql
# import pprint
# return '\n__dict__=%s\n' % pprint.pformat(record.__dict__)
return super(DjangoDbSqlPlainFormatter, self).format(record)
def __repr__(self):
buf = 'DjangoDbSqlFormatter(fmt="%s", options=%s)' % (self._fmt, self.options)
return buf
DjangoDbSqlFormatter = DjangoDbSqlPlainFormatter
if HAS_PYGMENTS:
DjangoDbSqlFormatter = DjangoDbSqlColorFormatter