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

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

4

2 回答 2

57

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

于 2011-01-29T22:22:16.790 回答
8

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

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

于 2011-01-29T23:07:46.913 回答