\

Pythonのloggingモジュールには、RotatingFileHandlerという便利な機能があります。これを使うと、指定したファイルサイズに達したら新しいログファイルを作成し、古いログファイルをローテーション(回転)させることができます。

RotatingFileHandlerの基本的な使い方

まずは、RotatingFileHandlerを使うための基本的なコードを見てみましょう。

import logging.handlers
import time

def main():
    # ロギングの基本設定
    formatter = "%(asctime)s:%(levelname)s:%(name)s:%(message)s"
    logging.basicConfig(level=logging.INFO, format=formatter, encoding="utf_8")

    # ロガーの作成
    logger = logging.getLogger(__name__)

    # ログレベルをDEBUGへ変更
    logger.setLevel(logging.DEBUG)

    # ログローテーションのハンドラーを設定
    # maxBytes: 1ログファイルの上限サイズ (byte単位)
    # backupCount: バックアップとして保持するログファイル数
    h = logging.handlers.RotatingFileHandler("test.log", maxBytes=10000, backupCount=5)

    # フォーマットを設定
    h.setFormatter(logging.Formatter(formatter))

    # ロガーにハンドラーを設定
    logger.addHandler(h)

    for _ in range(1000):
        time.sleep(0.1)
        logger.debug("log rotation test")

if __name__ == "__main__":
    main()

このコードでは、RotatingFileHandlerを使って、ログファイルtest.logが10KBに達したら新しいログファイルを作成し、古いログファイルは最大5つまで保持するように設定しています。

まとめ

PythonのloggingモジュールのRotatingFileHandlerを使うと、ログファイルのサイズを制御しながら、適切にログを管理することができます。これにより、ディスクの容量を圧迫することなく、長期間にわたるログの出力を続けることが可能になります。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です