当我告诉它时,如何使用Django的记录器记录回溯?

时间:2011-01-29 22:07:25

标签: python django logging traceback

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

我曾经这样调试过。我打印到控制台。现在,我想记录所有内容而不是打印,因为Apache不允许打印。那么,我该如何记录这整个回溯?

2 个答案:

答案 0 :(得分:50)

您可以使用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一起使用。

答案 1 :(得分:7)

如果您正在运行Django的主干版本(或1.3版本发布时),则内置了许多默认日志记录配置,这些配置与Python的标准日志记录模块集成在一起。为此,您需要做的就是import logging,调用logger = logging.getLogger(__name__)然后调用logger.exception(msg),您将获得消息和堆栈跟踪。 Django's logging functionalityPython's logger.exception method的文档将是方便的参考。

如果您不想使用Python的日志记录模块,您还可以import sys并写入sys.stderr而不是使用print。在命令行上,这将进入屏幕,当在Apache下运行时,它将进入错误日志。