MENU

【Logbook】シンプルで直感的なPythonのログライブラリを紹介

この記事では、Pythonの標準ログライブラリLogbookの概要と使い方について紹介します。

Pythonの環境構築がまだの方は、以下の記事をご覧ください。

Pythonの勉強におすすめの書籍はこちらです。

独習Python

新品価格
¥2,970から
(2024/6/21 10:41時点)

シリコンバレー一流プログラマーが教える Pythonプロフェッショナル大全

新品価格
¥2,574から
(2024/6/21 10:42時点)

目次

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 で保存する古いログファイルの数を指定できます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

ソフトウェアエンジニアとして働いています。

---------------------資格---------------------
応用情報技術者
ネットワークスペシャリスト

目次