0

我可以控制进入 /usr/bin/python 的内容,并且可以用我在下面调用 python 的脚本替换它。但是,我无法控制所编写的程序(不能强制执行特定约定等)。在这种情况下,除了在标准输出上显示堆栈跟踪之外,让 python 将堆栈跟踪转储到数据库中的最佳方法是什么?(有自己的剧本吗?)

更新:澄清:我的意思是程序在错误时生成的堆栈跟踪:

l = [1,2,3] l[4] Traceback(最近一次调用最后一次):文件“”,第 1 行,在 IndexError:列表索引超出范围

解决方案:我认为以下 AKX 的解决方案可以将 stderr 重定向到将堆栈跟踪转储到 NoSQL 存储的脚本。谢谢!

4

1 回答 1

0

您可以定义默认异常处理程序:

import sys
import traceback


def my_handler(typ, value, tb):
    error_str = traceback.format_exception(typ, value, tb)
    print 'Here you can write exception to DB: ', error_str
sys.excepthook = my_handler

print 1 / 0  # here you can execute third party code via execfile/import

查看有关异常处理生成回溯的文档。

于 2013-08-20T07:17:21.287 回答