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
を使うと、ログファイルのサイズを制御しながら、適切にログを管理することができます。これにより、ディスクの容量を圧迫することなく、長期間にわたるログの出力を続けることが可能になります。