如何在Django中使用日志记录回溯信息?

33 投票
2 回答
24825 浏览
提问于 2025-04-16 10:52
try:
    print blah
except KeyError:
    traceback.print_exc()

我以前调试代码的时候,都是用打印的方式,把信息输出到控制台。现在我想用记录日志的方式来替代打印,因为Apache不允许直接打印信息。那么,我该怎么把整个错误追踪记录下来呢?

2 个回答

8

如果你正在使用Django的最新版本(或者等1.3发布的时候),里面有很多默认的日志设置,这些设置和Python的标准日志模块是结合在一起的。你只需要做的就是 import logging,然后调用 logger = logging.getLogger(__name__),接着用 logger.exception(msg) 来记录信息,这样你就能同时看到你的消息和错误的详细信息。你可以参考一下 Django的日志功能文档Python的logger.exception方法文档

如果你不想用Python的日志模块,你也可以 import sys,然后写入 sys.stderr,而不是用print。这样在命令行上会显示在屏幕上,而在Apache下运行时,它会记录到你的错误日志里。

58

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

撰写回答