Python logging
ライブラリ完全ガイド
Python 標準ライブラリの logging
は、アプリケーションのログを記録・管理するためのツールを提供します。本記事では、logging
の主要な機能とその活用方法について詳しく解説します。
1. logging
ライブラリの概要
logging
は、Python 標準のログ記録ライブラリです。- デバッグ、情報、警告、エラー、重大なエラーなど、異なるレベルのログを記録できます。
- ファイルへの出力、コンソール出力、リモート送信など、柔軟なログ管理が可能です。
インストール方法
logging
は Python の標準ライブラリなので、追加のインストールは不要です。
import logging
2. 主な機能と使用例
(1) 基本的なログの出力(basicConfig
)
import logging logging.basicConfig(level=logging.INFO) logging.info("これは情報ログです。")
使用例: シンプルなログを記録し、デバッグやエラーの追跡に活用できます。
(2) ログの詳細なフォーマット設定
import logging logging.basicConfig( format='%(asctime)s - %(levelname)s - %(message)s', level=logging.DEBUG ) logging.debug("デバッグメッセージ") logging.info("情報メッセージ")
使用例: ログのフォーマットを設定し、時刻やログレベルを含めた詳細なログを記録できます。
(3) ファイルにログを保存
import logging logging.basicConfig( filename='app.log', format='%(asctime)s - %(levelname)s - %(message)s', level=logging.WARNING ) logging.warning("これは警告ログです。")
使用例: ログをファイルに保存し、後から分析できるようにします。
(4) 例外情報をログに記録
import logging try: 1 / 0 except ZeroDivisionError: logging.exception("ゼロ除算エラーが発生しました!")
使用例: 例外発生時にスタックトレースを含めたログを記録できます。
(5) ロガーの作成と使用(getLogger
)
import logging logger = logging.getLogger("my_logger") logger.setLevel(logging.DEBUG) handler = logging.StreamHandler() formatter = logging.Formatter('%(name)s - %(levelname)s - %(message)s') handler.setFormatter(formatter) logger.addHandler(handler) logger.debug("デバッグメッセージ")
使用例: カスタムロガーを作成し、モジュールごとにログの管理を分けることができます。
(6) 異なるレベルのログを記録
import logging logging.basicConfig(level=logging.DEBUG) logging.debug("デバッグメッセージ") logging.info("情報メッセージ") logging.warning("警告メッセージ") logging.error("エラーメッセージ") logging.critical("重大なエラーメッセージ")
使用例: 異なるログレベルを適切に活用して、システムの状態を記録する。
(7) ログの回転保存(RotatingFileHandler
)
import logging from logging.handlers import RotatingFileHandler handler = RotatingFileHandler("app.log", maxBytes=1000, backupCount=3) logger = logging.getLogger("my_logger") logger.addHandler(handler) logger.setLevel(logging.INFO) for i in range(100): logger.info(f"ログメッセージ {i}")
使用例: ログファイルのサイズが一定を超えたら、自動的に新しいファイルを作成する。
(8) 日時でログを分割(TimedRotatingFileHandler
)
import logging from logging.handlers import TimedRotatingFileHandler handler = TimedRotatingFileHandler("timed_app.log", when="midnight", interval=1, backupCount=7) logger = logging.getLogger("timed_logger") logger.addHandler(handler) logger.setLevel(logging.INFO) logger.info("このログは日付ごとに新しいファイルに保存されます。")
使用例: ログを日次や週次などで自動的にローテーションする。
(9) JSON 形式でログを出力
import logging import json class JSONFormatter(logging.Formatter): def format(self, record): log_record = { "time": self.formatTime(record), "level": record.levelname, "message": record.getMessage() } return json.dumps(log_record) logger = logging.getLogger("json_logger") handler = logging.StreamHandler() handler.setFormatter(JSONFormatter()) logger.addHandler(handler) logger.setLevel(logging.INFO) logger.info("JSON 形式のログメッセージ")
使用例: ログを JSON 形式で出力し、構造化ログとして管理する。
(10) メールでエラーログを送信(SMTPHandler
)
import logging from logging.handlers import SMTPHandler mail_handler = SMTPHandler( mailhost=("smtp.example.com", 587), fromaddr="noreply@example.com", toaddrs=["admin@example.com"], subject="アプリケーションエラー", credentials=("user", "password"), secure=() ) logger = logging.getLogger("email_logger") logger.addHandler(mail_handler) logger.setLevel(logging.ERROR) logger.error("重大なエラーが発生しました!")
使用例: エラー発生時に管理者へ自動でメール通知を送る。
3. logging
の主な機能
機能 | 説明 |
---|---|
basicConfig |
ログの基本設定を行う |
getLogger |
カスタムロガーを作成する |
StreamHandler |
コンソールにログを出力する |
FileHandler |
ファイルにログを保存する |
Formatter |
ログのフォーマットを設定する |
まとめ
Python の logging
ライブラリを活用すると、アプリケーションのログ管理を柔軟に行うことができます。デバッグ、エラーハンドリング、ファイル保存など、さまざまな用途で活用できるので、ぜひ logging
を使いこなしましょう! 🚀