如何使用调试信息记录 Python 错误?

新手上路,请多包涵

我正在使用 logging.error 将 Python 异常消息打印到日志文件中:

 import logging
try:
    1/0
except ZeroDivisionError as e:
    logging.error(e)  # ERROR:root:division by zero

是否可以打印有关异常和生成它的代码的更多详细信息,而不仅仅是异常字符串?行号或堆栈跟踪之类的东西会很棒。

原文由 probably at the beach 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 580
2 个回答

logger.exception 将在错误消息旁边输出堆栈跟踪。

例如:

 import logging
try:
    1/0
except ZeroDivisionError:
    logging.exception("message")

输出:

 ERROR:root:message
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
ZeroDivisionError: integer division or modulo by zero

@Paulo Check 注释,“请注意,在 Python 3 中,您必须在 except 部分中调用 logging.exception 方法。如果您在任意位置调用此方法,您可能会遇到奇怪的情况例外。文档对此发出警告。”

原文由 SiggyF 发布,翻译遵循 CC BY-SA 4.0 许可协议

使用 exc_info 选项可能更好,允许您选择错误级别(如果您使用 exception ,它将始终处于 error 级别):

 try:
    # do something here
except Exception as e:
    logging.critical(e, exc_info=True)  # log exception info at CRITICAL log level

原文由 flycee 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题