2016-10-02 3 views
3

私は何とかPythonアプリケーションによって生成されたトレースバックをキャプチャする方法をGoogleから探してきました。Pythonアプリケーションで生成されたトレースバックをキャプチャすることは可能ですか?

のいずれかのエラーが発生した場合、私に電子メール/スラック/通知を送信したいと思います(ユーザーに問題を報告するのではなく)。

まだ何も見つかりませんでしたwhich doesn't involve you doing a try/except。しかし、私はUI(PySide/PyQt4/PySide2/PyQt5)を起動し、ユーザーのやりとりにエラーが発生する可能性があるアプリケーションを作成しているので、私は個々のtry/except節の中にあるすべてのものを入れることはできません。

これが可能ですか?もしそうなら、どうすればトレースバックを生成できますか?あなたは簡単にカスタムsys.excepthookを作成することによって、それを行うことができます

+0

例外を検出し、電子メールを送信するログを解析できます。あるいは、あなたはsentry https://pypi.python.org/pypi/sentryを使ってみることができますか? –

答えて

4

:プリティプリントするトレースバックオブジェクトの場合

import sys 
import traceback 


def report_exception(exc_type, exc_value, exc_tb): 
    # just a placeholder, you may send an e-mail here 
    print("Type", exc_type) 
    print("Value", exc_value) 
    print("Tb", ''.join(traceback.format_tb(exc_tb))) 


def custom_excepthook(exc_type, exc_value, exc_tb): 
    report_exception(exc_type, exc_value, exc_tb) 
    sys.__excepthook__(exc_type, exc_value, exc_tb) # run standard exception hook 


sys.excepthook = custom_excepthook 

raise RuntimeError("I want to report exception here...") 

tracebackモジュールを参照してください。

+0

これは素晴らしいです、ありがとう! – fredrik

関連する問題