我想检查特定后台文件中的错误,但标准错误流由前台程序控制,问题文件中的错误未显示。不过,我可以使用 logging
模块并将输出写入文件。我想知道如何使用它来记录所有异常、错误及其回溯。
原文由 abc def foo bar 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想检查特定后台文件中的错误,但标准错误流由前台程序控制,问题文件中的错误未显示。不过,我可以使用 logging
模块并将输出写入文件。我想知道如何使用它来记录所有异常、错误及其回溯。
原文由 abc def foo bar 发布,翻译遵循 CC BY-SA 4.0 许可协议
import sys
import logging
import traceback
# log uncaught exceptions
def log_exceptions(type, value, tb):
for line in traceback.TracebackException(type, value, tb).format(chain=True):
logging.exception(line)
logging.exception(value)
sys.__excepthook__(type, value, tb) # calls default excepthook
sys.excepthook = log_exceptions
原文由 JeffCharter 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
4 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
2 回答848 阅读✓ 已解决
记录程序中抛出的 任何 异常可能不是一个好主意,因为 Python 也将异常用于正常的控制流。
因此,您应该只记录 未捕获 的异常。一旦你有一个异常对象,你可以使用记录器的
exception()
方法 轻松地做到这一点。要处理所有未捕获的异常,您可以将脚本的入口点包装在
try...except
块中,或者通过重新分配安装自定义异常处理程序sys.excepthook()
: