この記事では、Pythonの標準ログライブラリLogbook
の概要と使い方について紹介します。
Pythonの環境構築がまだの方は、以下の記事をご覧ください。
Logbookライブラリとは
Logbookは、Pythonプログラムでのロギングライブラリの一つで、特にシンプルさと柔軟性を重視して設計されています。
Python標準ライブラリのlogging
モジュールに代わるものとして使われることが多いです。Logbookは、より直感的なAPIと強力な機能を提供し、特にロギングの設定と使用が簡単です。
特徴
- 直感的なAPI
-
使いやすいインターフェースを提供し、設定や使用が簡単。
- 柔軟性
-
コンソール、ファイル、メールなど、多様な出力先に対応。
- カスタマイズ可能なハンドラー
-
独自のログ出力先を簡単に追加可能。
- スレッドセーフ
-
マルチスレッド環境でも安全に動作。
Logbook
シンプルで直感的に設計されており、少ないコード量でロギングができる点が標準ライブラリのlogging
との違いです。ただ、logging
の方がやや高機能ではあります。
サンプルコード
以下に主な使用方法のサンプルを紹介します。
Logbook
を使用する際は、事前に以下のコマンドでインストールする必要があります。
pip install logbook
基本的なログ記録
import logbook
import sys
# ログハンドラーを設定
logbook.StreamHandler(sys.stdout).push_application()
# ロガーを作成
logger = logbook.Logger('My Logger')
# ログメッセージを記録
logger.info('これは情報メッセージです。')
logger.warning('これは警告メッセージです。')
logger.error('これはエラーメッセージです。')
# ログハンドラーを設定
logbook.StreamHandler(sys.stdout).push_application()
この部分でハンドラーを作成し、ログメッセージの出力先として標準出力(sys.stdout
)を指定しています。push_application()
メソッドを呼び出すことで、このハンドラーをアプリケーションに適用し、後続の処理で使用できるようにします。
# ロガーを作成
logger = logbook.Logger('My Logger')
次にロガーを作成します。ロガーには名前を付けることができ、ここでは'My Logger'
という名前を付けています。名前付きのロガーを使用することで、ログメッセージを出力する際に、どの処理からのログメッセージであるかを識別しやすくなります。
このプログラムを実行すると、コンソールに以下のログが吐かれます。
[2024-06-22 08:11:38.697757] INFO: My Logger: これは情報メッセージです。
[2024-06-22 08:11:38.697868] WARNING: My Logger: これは警告メッセージです。
[2024-06-22 08:11:38.697974] ERROR: My Logger: これはエラーメッセージです。
ファイルへのログ出力
import logbook
# ファイルハンドラーを設定
file_handler = logbook.FileHandler('my_log.log')
file_handler.push_application()
# ロガーを作成
logger = logbook.Logger('File Logger')
# ログメッセージを記録
logger.info('これはファイルに記録される情報メッセージです。')
# ファイルハンドラーを設定
file_handler = logbook.FileHandler('my_log.log')
file_handler.push_application()
ハンドラー作成時にファイル名を指定することで、ログメッセージをファイルに出力することができます。
ログファイルのローテーション
import logbook
# RotatingFileHandlerを使用してファイルをローテート
file_handler = logbook.RotatingFileHandler('app.log', max_size=100, backup_count=3)
file_handler.push_application()
# ロガーを作成
logger = logbook.Logger('Rotating File Logger')
# ログの記録
for i in range(10):
logger.info(f'ログメッセージ {i}')
file_handler = logbook.RotatingFileHandler('app.log', max_size=100, backup_count=3)
ハンドラーの設定で、ログファイルのローテート設定を行うことができます。max_size
でログファイルの最大サイズ、backup_count
で保存する古いログファイルの数を指定できます。