サイトアイコン Python Snippets

loggingで例外情報を出力する

logging.errorで例外を出力しようとしたときに、例外オブジェクトを渡してもスタックトレースは出力されない。

Javaなんかだと、例外オブジェクトをerrorメソッドの引数として渡すが、pythonの場合はexceptionでログ出力する。

try:
  ...
except Exception, e:
    logging.exception('エラーが起きた')

logging.errorメソッドでもexc_info=Trueをつければ同じように出力される。それを簡略化したのがlogging.exceptionメソッド。

try:
  ...
except Exception, e:
    logging.error('エラーがおきた', exc_info=True)

tracebackモジュールのformat_exception(exc_type, exc_value, exc_traceback)を使って自前でスタックトレースを作成することもできるが、それは特に整形にい観があるとき以外は無駄な処理なのでやめるべき。

関連記事:

モバイルバージョンを終了