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)を使って自前でスタックトレースを作成することもできるが、それは特に整形にい観があるとき以外は無駄な処理なのでやめるべき。

関連記事:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)