すべての例外をキャッチして、次のコードでログファイルに記録しようとしていますが、なんらかの理由でそれらをキャッチしません。コードは次のとおりです。Jupyter Pythonの例外キャッチャーが機能しない(sys.excepthook)
その後# Prepares logging
import logging
import time
output_folder='whatever'
# Logging to file:
today=time.strftime("%Y%M%d %H:%M:%S")
logging.basicConfig(filename=output_folder+'/logger '+today+'.log',level=logging.DEBUG,
format='%(asctime)s %(message)s', filemode='w')
logging.info('Program started.')
# Every time there is an error, catch it
import sys
#def error_catching(exctype, value, tb):
def log_uncaught_exceptions(ex_cls, ex, tb):
print "Error found"
logging.critical(''.join(traceback.format_tb(tb)))
logging.critical('{0}: {1}'.format(ex_cls, ex))
sys.excepthook = log_uncaught_exceptions
私は存在しない変数(「M」)を呼び出すことによって、例えば、エラーを生成し、私はエラーを取得するが、何もログファイル内のログではありません:
m #this should generate a NameError, which is the following
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-9-69b64623f86d> in <module>()
----> 1 m
NameError: name 'm' is not defined
また、ログファイルには何も記録されません。私は何を間違えたのですか?
ありがとうございます!
iPythonがこのフックに依存しているかどうかはわかりません。私はそれが独力でフックを持っていると思う。私は24時間以内に何も提供されなければ、より良い答えを書こうとします。 – Josay
http://stackoverflow.com/questions/1261668/cannot-override-sys-excepthookを参照してください(恐らく重複した質問...) – Josay
Josay、ご意見ありがとうございます。重複とマークされた回答にはいくつかの共通点がありますが、その質問で選択された回答は正解ではない可能性があります。あなたの方法を試して、あなたに戻ってきます。 – Escachator