запись запроса информации в файл, во внутренние функции (Django) - PullRequest
1 голос
/ 01 мая 2011

Я использую простой логгер для сохранения отладочной информации в файл. Моя проблема в том, что я хочу, чтобы каждая строка в журнале начиналась с префиксной информации о запросе (например, user, url), а внутренние функции, активированные представлением, не имеют доступа к параметру запроса.

Я думал о

  1. передача запроса каждой функции - очень плохо
  2. взбирается по стеку трассировки, ищет «запрос» в локальных переменных - не уверен, как это сделать, или он будет слишком медленным (скажем, регистрация до 100 раз за запрос)
  3. окружение функции представления оператором «with», который будет хранить всю информацию запроса в глобальной переменной (ключ = идентификатор потока) - не рекомендуется в качестве угрозы безопасности (http://code.djangoproject.com/wiki/CookBookThreadlocalsAndUser) и требует отступа всего кода в представлении

Есть ли элегантное решение?

Ответы [ 2 ]

1 голос
/ 16 марта 2012

Полагаю, вы хотите использовать фильтр, который добавляет атрибуты запроса в ваши сообщения журнала.Этот пакет, кажется, решает эту проблему: http://pypi.python.org/pypi/django-requestlogging

0 голосов
/ 01 мая 2011

Это может быть не совсем то, что вы ищете, но django-sentry предоставляет описанную вами функциональность (также с хорошим веб-интерфейсом). Это может быть проще, чем пытаться найти собственное решение.

...