Понимаю, что теме месяц. Но всё же хотел добавить.
1. Это именно фишка джанго. Очень удобный инструмент для дебагинга. И на основе этого и работает sql дебагинг во всяких джанго-тулбарах.
2. Это не логгинг в стандартном понимании.
3. Под капотом всё просто:
в django.db есть connection - текущий connection к базе. Я тут опускаю работу с несколькими базами, но всё аналогично.
У этого connection есть атрибут queries - это как раз список всех запросов. Каждый запрос - это словарь {'time':<время_выполнения>, 'sql':<sql_отправленный_в_базу>}
И обычно работа происходит так:
from django.db import connection
from someapp.models import SomeModel, AnotherModel..
try:
qs = SomeModel.objects.filter(….).extra(….)
qs2 = AnotherModel.objects.filter(….).values(….).annotate(….)
# и так далее..
# короче много запросов и может даже какой-то из них валится и не понять почему
finally:
for q in connection.queries:
print q['time'], ' :: ', q['sql']
4. Если же у вас куча запросов и нужен DEBUG=TRUE, то просто периодически сбрасывайте connection.queries
Ну предположим у вас какой-нибудь бесконечный цикл и в нем обращения к базе.
from django.db import connection
while True:
# тут эти все ваши запросы
…..
# и в конце итерации
connection.queries = []