Я так отлаживался. Я буду печатать на консоли. Теперь я хочу записывать все вместо печати, так как Apache не разрешает печать. Итак, как мне записать всю трассу?
Ответ 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 он войдет в ваши журналы ошибок.