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)
を使って自前でスタックトレースを作成することもできるが、それは特に整形にい観があるとき以外は無駄な処理なのでやめるべき。
ピンバック: 【Python】logging でStackTrace(スタックトレース)をログ出力する方法 | 備忘録 | 脱!社畜計画