将Python异常信息转换为字符串以进行记录

5 python exception

我尝试在Python 2.5中记录异常,但我不能这样做.所有格式化功能都不是我想要的.

我想出了这个:

def logexception(type, value, traceback):
  print traceback.format_exception(type, value, traceback)

sys.excepthook = logexception
Run Code Online (Sandbox Code Playgroud)

但是在调用时它会因为参数错误而失败,尽管根据文档它应该有效.任何人都知道这个问题是什么或有其他插入式解决方案?

Ale*_*lli 5

为什么该traceback参数有一个format_exception方法就像跟踪模块中的函数一样,它的名称是篡夺的,如果有一个方法,为什么该方法需要调用它的同一个对象作为最后一个参数传入?

我怀疑你只是想给第三个参数一个不同的名字,以免隐藏回溯模块,说:

import sys
import traceback

def logexception(type, value, tb):
  print traceback.format_exception(type, value, tb)

sys.excepthook = logexception
Run Code Online (Sandbox Code Playgroud)

而事情应该会好得多.

  • 由于我提交了相同的答案(一分钟后),我将删除我的答案.为了完整起见:因为类型作为参数也会影响内置函数,我认为它也应该重命名为exc_type或者其他... (2认同)