Как сделать logging.DEBUG в коде Django? - PullRequest
0 голосов
/ 09 ноября 2011

В django у нас есть settings.py, который определяет DEBUG для всего проекта.

Теперь, Мой уровень отладки настраивается независимо в settings.py.

Как мне использовать logging.DEBUG?

Way1:

if settings.DEBUG:
    logging.debug("Debug message")

Way2:

# Without checking settings.DEBUG
logging.debug("Debug message")

Что такое хорошая практика?

Я думаю, что мы должны использовать Way2, поскольку уровень ведения журнала уже решает - будет ли сообщение зарегистрировано или нет. Но некоторые говорят, что Way1 - стандартная практика.

Ответы [ 2 ]

4 голосов
/ 09 ноября 2011

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

Что делать, если вы хотите проверять код и регистрировать вещи на производстве? Вы не собираетесь превращать DEBUG в истину, чтобы сделать это, не так ли? Вы бы предпочли уменьшить фильтр журнала.

С более стилистической точки зрения, это не имеет большого смысла и не слишком питонично, если 2 параметра (DEBUG и уровень журнала) влияют на одно поведение.

Короткий ответ: мое мнение таково, что метод 2 является превосходным, если говорить технически и стилистически.

1 голос
/ 10 ноября 2011

Второй метод хорош, и на самом деле я использую его все время.

Единственная причина, по которой я привожу здесь ответ, заключается в том, что мы фактически сделали что-то вроде (1) в рабочем проекте несколько лет назад, но оказалось, что, хотя мы ничего не регистрировали на уровне отладки в производстве в файл стоимость создания сообщение отладки само по себе было довольно дорогим и влияло на производительность.

т.е.

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

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

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