Подтвердить что ты не робот

Как я могу использовать регистратор Django для регистрации трассировки, когда я говорю?

try:
    print blah
except KeyError:
    traceback.print_exc()

Я так отлаживался. Я буду печатать на консоли. Теперь я хочу записывать все вместо печати, так как Apache не разрешает печать. Итак, как мне записать всю трассу?

4b9b3361

Ответ 1

Вы можете использовать механизм регистрации python:

import logging
...

logger = logging.getLogger("blabla")
...

try:
    print blah # You can use logger.debug("blah") instead of print
except KeyError:
    logger.exception("An error occurred")

Это будет печатать трассировку стека и будет работать с apache.

Ответ 2

Если вы запускаете версию транка Django (или 1.3 при ее выпуске), существует множество стандартных конфигураций ведения журнала по умолчанию, в которые встроены модуль стандартного ведения журнала Python. Для этого вам нужно всего лишь import logging, вызвать logger = logging.getLogger(__name__), а затем вызвать logger.exception(msg), и вы получите как свое сообщение, так и трассировку стека. Документы для функции ведения журнала Django и метод Python logger.exception быть удобными ссылками.

Если вы не хотите использовать модуль протоколирования Python, вы также можете import sys и записать в sys.stderr вместо использования печати. В командной строке это будет отображаться на экране, при запуске под Apache он войдет в ваши журналы ошибок.