見出し画像

【Python】もうprintデバッグは卒業!loggingモジュールで賢く記録を残す

プログラムの動作を確認するために、コードのあちこちにprint()文を仕込んで変数の値を表示させる。誰もが通る道ですが、この「printデバッグ」にはいくつかの問題があります。 ・デバッグが終わったら、print文を消して回るのが面倒。 ・どのメッセージが重要で、どれが些細な情報なのか区別がつかない。 ・プログラムの実行結果とデバッグ情報がコンソールに混ざって見にくい。

これらの問題を解決し、より体系的でプロフェッショナルな記録を残すためのツールが、Pythonの標準ライブラリ**logging**モジュールです。

◆ loggingがprintより優れている3つの理由 loggingモジュールは、printにはない多くの便利な機能を提供します。

  • 1. ログレベルで、メッセージの重要度を使い分ける loggingには、DEBUG, INFO, WARNING, ERROR, CRITICALという5段階の「レベル」があります。これにより、「これはデバッグ用の詳細情報 (DEBUG)」「これは致命的なエラー (CRITICAL)」といったように、メッセージの重要度を区別できます。さらに、**「INFOレベル以上だけ表示」**といった設定を一行加えるだけで、不要なデバッグメッセージを非表示にできるため、print文をコメントアウトして回る必要がありません。

  • 2. タイムスタンプやレベル名を自動で追加 2025-09-05 19:40:00 - DEBUG - total = 120のように、全てのログメッセージにタイムスタンプやログレベルを自動で付与できます。これにより、「いつ、どんな重要度のイベントが起きたか」が一目瞭然になります。

  • 3. 出力先をファイルへ簡単切り替え 設定を一行追加するだけで、全てのログメッセージの出力先を、コンソールからログファイルに切り替えることができます。これにより、プログラムの実行結果と、動作の記録を完全に分離して管理できます。

◆ 具体的なコードと解説はブログで 「logging.basicConfig()で、ログレベルやフォーマットを設定する具体的な書き方は?」 「DEBUGやINFOといった、各レベルのログをどうやって出力するの?」 「ログの出力先をファイルに変更するコードが見たい」

私のブログ**「森の株」**では、loggingモジュールの基本的な使い方を、階乗を計算する関数のデバッグを例に、分かりやすいサンプルコードで解説しています。

詳しいサンプルコードと解説はこちら Pythonのloggingモジュール入門:効果的なログ記録の基本

最後までお読みいただき、ありがとうございました。


いいなと思ったら応援しよう!