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

TIM*_*MEX 27 python django logging traceback

try:
    print blah
except KeyError:
    traceback.print_exc()
Run Code Online (Sandbox Code Playgroud)

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

Lin*_*Lin 51

您可以使用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")
Run Code Online (Sandbox Code Playgroud)

这将打印堆栈跟踪并将与apache一起使用.

  • 是的,完整的堆栈跟踪.从文档中:"Logger.exception()创建一个类似于Logger.error()的日志消息.区别在于Logger.exception()随之转储堆栈跟踪." 这是文档的链接 - http://docs.python.org/library/logging.html (7认同)

Gab*_*ley 7

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

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