0

/usr/bin/python に入る内容を制御でき、その下で python を呼び出すスクリプトに置き換えることができます。ただし、作成されたプログラムを制御することはできません (特定の規則などを強制することはできません)。このような状況では、スタックトレースを stdout に表示するだけでなく、python にデータベースにダンプさせる最善の方法は何でしょうか? (独自のスクリプトをお持ちですか?)

更新:明確化:プログラムがエラー時に生成するスタックトレースを意味しました:

l = [1,2,3] l[4] トレースバック (最新の呼び出しが最後): ファイル ""、1 行目、IndexError: リスト インデックスが範囲外です

解決策: 以下の AKX の解決策は、スタックトレースを NoSQL ストアにダンプするスクリプトに stderr をリダイレクトすることで機能すると思います。ありがとう!

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 に答える