Django Development Logging Http отвечает на сервер разработки - PullRequest
2 голосов
/ 06 марта 2012

Я создаю API, используя Django. Каждое представление отвечает в формате JSON. Я хотел бы регистрировать каждый HttpResponse JSON на выходе серверов разработки.

Пока что я добавил обработчик:

 'console': {
        'level':'DEBUG',
        'class':'logging.StreamHandler',
 }   

, а затем добавил регистратор:

'to_console': {
        'handlers': ['console'],
        'level': 'DEBUG',
    }   

На мой взгляд, я получаю логгер logger = logging.getLogger('to_console')

и для каждого ответа JSON logger.debug(json_str)

Для первого взгляда это было хорошо. Но мне интересно, можно ли отключить отладку при развертывании приложения в рабочей среде. Похоже, https://docs.djangoproject.com/en/dev/topics/logging/#django.utils.log.RequireDebugFalse может работать. Но тогда это приводит к тому, что мой код завален этими инструкциями регистрации. Мне никогда не приходилось регистрировать что-то вроде этого, поэтому мне интересно, какой самый удобный способ справиться с этим.

Как правильно вести ведение журнала разработки, чтобы его можно было «отключить», когда код находится в рабочем состоянии? Или мне не хватает какой-то встроенной функциональности или приложения, которое автоматически регистрирует все HttpResponse на сервере dev?

1 Ответ

2 голосов
/ 07 марта 2012

Функциональность ведения журнала может быть отключена и включена путем изменения конфигурации, которую вы предоставляете для ведения журнала.Вы можете думать, что операторы журналирования «засоряют» ваш код, но как только сервер запущен в производство, у вас (в общем) очень мало способов узнать, что происходит внутри, кроме ведения журналов.

При необходимостиВы можете отправить работающему серверу POST с данными JSON, содержащими новую конфигурацию, которая затем вступает в силу с помощью представления, обрабатывающего запрос POST.Но желательно оставить операторы журналирования на месте, так как они довольно дешевы, когда уровни журналирования таковы, что на самом деле ничего не выводится (как вы могли ожидать, фактический ввод-вывод записи в консоль / файл / сокет и т. Д. Занимает большую частьвремя, но если уровни установлены достаточно высоко, на самом деле выводится мало или вообще ничего).

Когда все работает нормально при разработке и тестировании, но безошибочно дает сбой в работе, ведение журнала иногда может быть единственным доступным средством диагностики.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...