Pythonのロギングシステムは、アプリケーションの動作を追跡するための強力なツールです。特に、warning
とexception
のログレベルは、問題の診断とデバッグに非常に役立ちます。
WarningとExceptionの違い
Pythonのロギングシステムでは、warning
とexception
は異なる目的で使用されます。
warning
: 予期しないことが起こった、または問題が起こりそうな兆候が見られる場合に記録されます。exception
: エラーメッセージと一緒にスタックトレースを記録します。これは通常、例外ハンドラから呼び出されます。
一般的な誤解
logging.exception()
は、その名の通り、例外処理時にexcept:
の中で利用することを想定しています。しかし、実装するときに勘違いしている例をよく見かけます。よくある勘違いとは「キャッチした例外を引数に入れる」というものです。
try:
int("aaa")
except Exception as e:
logging.exception(e)
このコードでは、エラーメッセージが2回重複して出力されます。これは、logging.exception()
が自動的に例外情報をログメッセージに追加するためです。
正しい使い方
例外情報は自動的に取得されるので、実際には例外オブジェクトの取得は不要です。
try:
int("aaa")
except:
logging.exception("What is doing when exception happens.")
このように、例外だけを出力するのではなく、開発者が理解しやすいメッセージを付与するとよいでしょう。
まとめ
Pythonのロギングシステムは、アプリケーションの動作を追跡し、問題を診断するための強力なツールです。warning
とexception
のログレベルを適切に使用することで、より効果的なデバッグが可能になります。