Pythonでloggingモジュールを使いこなす

Pythonの `logging` モジュールは、アプリケーションでのロギング(ログ取り)を簡単にしてくれる強力なツールです。この記事では、`logging` モジュールの基本的な使い方から応用例まで、具体的なコードとその解説、応用例を含めて紹介します。

目次

なぜloggingモジュールを使うのか

`logging` モジュールを使用する主な理由は、デバッグ作業を効率化したり、実行中のプログラムに何が起きているかを把握するためです。ただの `print` 文で出力するよりも、ロギングは柔軟性と機能性が高いです。

loggingモジュールの基本

基本的な設定と出力

Pythonの `logging` モジュールを使って、最も簡単なログを出力する方法を以下のコードで示します。


# loggingモジュールをインポート
import logging

# 基本設定
logging.basicConfig(level=logging.INFO)

# ログの出力
logging.info("これはINFOレベルのログです。")

ログレベル

`logging` モジュールには、以下のようなログレベルが存在します。
– CRITICAL
– ERROR
– WARNING
– INFO
– DEBUG

例えば、`level=logging.INFO` と設定した場合、INFOレベル以上(INFO、WARNING、ERROR、CRITICAL)のログが出力されます。

詳細な設定

ログのフォーマット

ログの出力形式も自分でカスタマイズできます。


# フォーマットを設定
logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.INFO)

# ログ出力
logging.info("カスタムフォーマットでの出力")

ファイルへの出力

ログをファイルに出力することも可能です。


# ファイルへの出力設定
logging.basicConfig(filename='example.log', level=logging.INFO)

# ログ出力
logging.info("これはファイルに出力されます。")

応用例

複数のログファイルに出力

異なる種類の情報を異なるファイルに出力する方法です。


# 複数のロガーを作成
logger1 = logging.getLogger('logger1')
logger2 = logging.getLogger('logger2')

# 出力レベルとファイルを設定
logger1.setLevel(logging.INFO)
logger2.setLevel(logging.ERROR)

handler1 = logging.FileHandler('info.log')
handler2 = logging.FileHandler('error.log')

logger1.addHandler(handler1)
logger2.addHandler(handler2)

# ログ出力
logger1.info('logger1によるINFOレベルのログ')
logger2.error('logger2によるERRORレベルのログ')

ログのローテーション

ファイルサイズが一定以上になったら新しいファイルにログを出力する方法です。


from logging.handlers import RotatingFileHandler

# ローテーションの設定
handler = RotatingFileHandler('my_log.log', maxBytes=2000, backupCount=10)
logger = logging.getLogger('RotatingLog')
logger.setLevel(logging.INFO)
logger.addHandler(handler)

# ログ出力
for i in range(100):
    logger.info("これはローテーションされるログです。 %d" % i)

まとめ

Pythonの `logging` モジュールは、プログラムの診断とデバッグに非常に有用です。基本的な使い方から応用まで、多くの機能が用意されていますので、ぜひ活用してください。

コメント

コメントする

目次