Pythonで例外発生時にプログラムを終了させず、フルのトレースバック情報を取得したい場合、tracebackモジュールが非常に有用です。通常、例外をキャッチすると、traceback.print_exc()を使ってエラーの詳細を出力できます。

import traceback
try:
    # エラーが発生する可能性のあるコード
    raise Exception("エラーメッセージ")
except Exception as e:
    traceback.print_exc()

このコードにより、エラーのスタックトレース全体が標準出力に表示されます。また、traceback.format_exc()を使えば、トレースバックを文字列として取得できます。

error_trace = traceback.format_exc()
print(error_trace)

さらに、エラーをログに記録したい場合は、loggingモジュールを使用します。例えば、logger.exception()を使うことで、エラーメッセージとフルトレースバックが自動的にログに記録されます。

import logging
logging.basicConfig(level=logging.ERROR)
logger = logging.getLogger(__name__)
try:
    # エラーが発生するコード
    raise Exception("ログに記録するエラー")
except Exception as e:
    logger.exception(e)

これにより、エラーメッセージとトレースバックがログに出力され、後から確認することが可能です。

まとめ

  • traceback.print_exc()は、標準出力にトレースバックを出力します。
  • traceback.format_exc()を使うと、トレースバックを文字列として取得可能です。
  • ログにエラーを記録する場合は、logging.exception()を使用します。 このように、Pythonでは例外処理時に豊富なトレースバック情報を効率的に扱う方法が提供されています。