カテゴリ: Python 更新日: 2026/02/19

Pythonのloggingモジュール入門!初心者でもできるエラーログの記録方法をやさしく解説

Pythonのloggingモジュールを使ってエラーをログに記録する方法
Pythonのloggingモジュールを使ってエラーをログに記録する方法

先生と生徒の会話形式で理解しよう

生徒

「Pythonのプログラムを書いているときにエラーが出ても、そのとき何が起きたのかすぐに分からなくて困ってしまいます。エラーをどこかに記録しておく方法ってあるんですか?」

先生

「そのときに役立つのがPythonのloggingモジュールです。エラーや警告をログとしてファイルに残しておけば、後からゆっくり確認できますよ。」

生徒

「ログという言葉は聞いたことがありますが、具体的にどういうものなんでしょうか?難しそうで少し不安です。」

先生

「ログというのは、プログラムの動きやエラーの内容を記録したメモのようなものです。Pythonのloggingモジュールを使えば、初心者でも簡単にログ出力ができます。まずは基本から一緒に見ていきましょう。」

1. Pythonのloggingモジュールとは?【printとの違いも解説】

1. Pythonのloggingモジュールとは?【printとの違いも解説】
1. Pythonのloggingモジュールとは?【printとの違いも解説】

Pythonのlogging(ロギング)モジュールとは、プログラムが「いつ」「どこで」「どのような」動きをしたのかを記録するための標準ライブラリです。「標準ライブラリ」なので、別途インストールする必要はなく、import loggingと1行書くだけですぐに使い始められます。

プログラミング初心者の方は、エラーの確認にprint()関数を使いがちですが、実は運用フェーズではloggingの方が圧倒的に有利です。なぜなら、printは画面に表示して消えてしまいますが、loggingはファイルとして保存できるため、数日前に発生した「謎のエラー」の原因も後から特定できるからです。

未経験者向け:身近な例え
「print」は、その場限りのつぶやき。「logging」は、後で読み返せる航海日誌(ログブック)のようなものです。

例えば、以下のような非常にシンプルなコードで、その便利さを実感してみましょう。


import logging

# ログの記録ルールを「メモ帳(app.log)」に保存するように設定
logging.basicConfig(filename='app.log', level=logging.INFO)

print("画面にだけ表示されます")
logging.info("これはファイルに保存される大切な記録です")

このコードを実行すると、画面には「画面にだけ表示されます」と出ますが、同時にapp.logというファイルが自動で作られ、そこに実行した時間が刻まれます。これは、夜中に自動で動くプログラムや、ユーザーのパソコンで動くアプリを開発する際に、「トラブルの証拠」を確実に残すための必須テクニックです。ログを味方につけることで、バグ修正(デバッグ)の効率が劇的に向上します。

2. logging.basicConfigで簡単なログ設定をしよう

2. logging.basicConfigで簡単なログ設定をしよう
2. logging.basicConfigで簡単なログ設定をしよう

まずは最も基本的なloggingの使い方から確認してみましょう。loggingモジュールを使うときは、最初にログの出力方法やレベルを設定するためにbasicConfigという関数を呼び出します。レベルとは、ログの重要度を表すもので、DEBUG、INFO、WARNING、ERROR、CRITICALなどが用意されています。初心者のうちは、エラーや警告を中心に扱うだけでも十分役に立ちます。


import logging

logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s [%(levelname)s] %(message)s"
)

logging.info("プログラムを開始します")
logging.warning("設定ファイルが見つかりませんでした")
logging.error("処理中にエラーが発生しました")

このように書くと、情報レベルのメッセージ、警告、エラーを順番に出力できます。formatという部分では、ログの見た目を指定していて、時刻やレベル名、メッセージを含めることができます。画面に出すだけでなく、後から読み返したときに状況が分かるような形にしておくのがポイントです。

3. 例外処理とloggingを組み合わせてエラーを記録する

3. 例外処理とloggingを組み合わせてエラーを記録する
3. 例外処理とloggingを組み合わせてエラーを記録する

次に、Pythonの例外処理とloggingモジュールを組み合わせる方法を見ていきます。tryとexceptを使ったエラーハンドリングにloggingを追加することで、エラーが起きたときのメッセージをログに書き出せるようになります。これにより、ユーザーには優しいメッセージを表示しつつ、開発者側では詳細なエラー情報をログから確認できるようになります。


import logging

logging.basicConfig(
    level=logging.ERROR,
    format="%(asctime)s [%(levelname)s] %(message)s",
    filename="error.log"
)

def divide(a, b):
    return a / b

try:
    result = divide(10, 0)
    print("結果:", result)
except Exception as e:
    logging.error("計算中に例外が発生しました", exc_info=True)
    print("エラーが発生しました。詳細はログを確認してください。")

エラーが発生しました。詳細はログを確認してください。

この例では、ゼロで割り算をしようとして例外が発生しますが、画面には簡単なメッセージだけが表示され、詳しいエラー情報はerror.logというファイルに記録されます。exc_info=Trueという指定によって、例外の種類やエラーメッセージ、どの行で発生したかといった詳細なスタックトレースも一緒に保存されます。

4. ログレベルを使い分けて分かりやすく記録する

4. ログレベルを使い分けて分かりやすく記録する
4. ログレベルを使い分けて分かりやすく記録する

loggingモジュールには複数のログレベルがあり、それぞれ意味が異なります。DEBUGは開発中の細かな情報、INFOは通常の実行状況、WARNINGは注意が必要な状態、ERRORはエラー発生時、CRITICALは致命的な問題を表します。すべてを同じレベルで記録してしまうと、重要度の違いが分かりにくくなってしまうため、レベルを使い分けることが大切です。

たとえば、ユーザーの入力値が少し怪しい場合にはWARNINGを使い、処理が完全に失敗した場合にはERRORを使うように決めておくと、ログを読み返したときに状況を素早く把握できます。プログラミング未経験の人でも、レベルごとに意味を覚えておけば、ログの読み方にすぐ慣れていきます。

5. ファイル出力と画面出力を組み合わせるイメージを持とう

5. ファイル出力と画面出力を組み合わせるイメージを持とう
5. ファイル出力と画面出力を組み合わせるイメージを持とう

loggingモジュールは、画面だけでなくファイルにもログを残せるのが強みです。basicConfigでfilenameを指定すればファイル出力になり、指定しなければ標準出力、つまり画面に表示されます。実務では、開発中は画面に多めにログを表示し、本番環境ではファイルに静かに記録しておくスタイルがよく使われます。これにより、ユーザーの操作を邪魔せずにトラブルを記録できます。

また、ログファイルは定期的に確認して、同じエラーが繰り返し発生していないかチェックする習慣をつけておくと安心です。エラーハンドリングとログ設計をセットで考えることで、Pythonのプログラムは格段に安定していきます。最初は小さなスクリプトでも、少しずつloggingモジュールを組み込んでいくことで、より実践的なコードに成長させることができます。

まとめ

まとめ
まとめ

ここまで、Pythonのloggingモジュールについて、基礎から実践的な使い方まで順番に見てきました。 loggingモジュールは、単にエラーを表示するための仕組みではなく、プログラムの動きを記録し、後から振り返るための大切な道具です。 初心者のうちはprint文で状況を確認することが多いですが、処理が増えたり、実行時間が長くなったりすると、それだけでは限界が出てきます。 その点、loggingを使えば、いつ・どこで・どんな状態だったのかを時系列で残せるため、トラブル対応や原因調査がとても楽になります。

記事の前半では、loggingモジュールがPythonの標準機能であること、そしてbasicConfigを使えば簡単にログ出力を始められることを学びました。 ログレベルを設定することで、重要度に応じたメッセージを出し分けられる点も、実務では非常に重要です。 INFOやWARNING、ERRORといったレベルを意識して使うだけで、ログの読みやすさが大きく変わります。

また、例外処理とloggingを組み合わせることで、ユーザーには分かりやすいメッセージを表示しつつ、 開発者向けには詳細なエラー情報をログファイルに残す、という理想的なエラーハンドリングができることも確認しました。 特にexc_infoを使ったスタックトレースの記録は、後から原因を調べる際に大きな助けになります。

ログを画面に出すか、ファイルに出すかを使い分ける考え方も重要なポイントです。 開発中は画面出力で素早く確認し、本番環境ではファイルに静かに記録する、という流れを意識すると、 Pythonプログラムの品質と信頼性が一段階上がります。 loggingは「今すぐ必要にならないから後回し」にされがちですが、早いうちから慣れておくと後で必ず役立ちます。

まとめとしてのサンプルプログラム

最後に、これまでの内容を意識した、シンプルで実用的なloggingのサンプルを見てみましょう。 エラー発生時にはログに記録し、画面には最低限のメッセージだけを表示する例です。


import logging

logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s [%(levelname)s] %(message)s",
    filename="app.log"
)

def load_data(value):
    if value < 0:
        raise ValueError("不正な値が渡されました")
    return value * 2

try:
    result = load_data(-1)
    logging.info("処理結果: %s", result)
except Exception:
    logging.error("データ処理中にエラーが発生しました", exc_info=True)
    print("問題が発生しました。詳細はログを確認してください。")

このように書いておけば、実行時にエラーが起きても、詳細はログファイルにしっかり残ります。 後からログを確認することで、同じミスを繰り返さないための改善にもつなげられます。

先生と生徒の振り返り会話

生徒

「loggingって難しそうだと思っていましたが、printの代わりに使う感覚から始めればいいんですね。 エラーを後から確認できるのは、すごく安心だと感じました。」

先生

「その気づきはとても大切ですね。最初はINFOやERRORだけでも十分です。 ログを残す習慣がつくと、プログラムのトラブル対応が本当に楽になります。」

生徒

「例外処理と組み合わせることで、ユーザーに優しい表示と、開発者向けの情報を分けられるのも便利ですね。 実際のアプリでも使えそうだと思いました。」

先生

「その通りです。loggingは小さなスクリプトから本格的なシステムまで幅広く使えます。 今回学んだ内容をベースに、少しずつログ設計を意識していくと、Pythonの理解も深まりますよ。」

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

関連記事:
カテゴリの一覧へ
新着記事
New1
Python
Pythonの定数を定義する方法!慣習とモジュールを活用した書き方
New2
Python
Pythonのカプセル化とは?private変数とプロパティの活用方法をやさしく解説
New3
Python
Pythonの継承とは?親クラス・子クラスの関係とメソッドオーバーライドをやさしく解説
New4
Python
Pythonのインスタンス変数とクラス変数の違い!selfの使い方を初心者向けに解説
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonのfinally文を徹底解説!例外発生時でも実行される処理の書き方と使い方
No.2
Java&Spring記事人気No2
PHP
PHP の MySQL にデータを挿入する方法(INSERT 文の実行)を完全解説!初心者向けガイド
No.3
Java&Spring記事人気No3
Python
Pythonで辞書のネスト構造(入れ子辞書)を扱う方法 初心者向け完全ガイド
No.4
Java&Spring記事人気No4
PHP
PHPの配列をソートする方法!sort, rsort, asort, ksortの使い方を丁寧に解説します!
No.5
Java&Spring記事人気No5
PHP
PHPの可変長引数(...$args)の使い方を完全ガイド!初心者でもわかる基本と活用方法
No.6
Java&Spring記事人気No6
PHP
PHP の MySQL 接続の基本(mysqli, PDO)を完全解説!初心者向けガイド
No.7
Java&Spring記事人気No7
Python
Pythonで経過時間を測る方法をやさしく解説!初心者向けtime.perf_counterとtime.sleepの使い方
No.8
Java&Spring記事人気No8
Python
Pythonのライブラリとは?標準ライブラリとサードパーティライブラリの違いを初心者向けに解説!