Как мне использовать регистратор Django для регистрации трассировки, когда я говорю об этом? - PullRequest
26 голосов
/ 30 января 2011
try:
    print blah
except KeyError:
    traceback.print_exc()

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

Ответы [ 2 ]

50 голосов
/ 30 января 2011

Вы можете использовать механизм регистрации 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.

7 голосов
/ 30 января 2011

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

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

...