Python RotatingFileHandler: автоматическая ротация логов при достижении размера

Простой пример настройки Python-логирования с RotatingFileHandler: автоматическая ротация файлов лога при достижении заданного размера, без ручного вмешательства.


**Почему это важно**

* Контроль размера: лог-файлы не разрастаются бесконтрольно.

* Архивация: старые логи автоматически сохраняются с префиксом .1, .2…

* Простота: встроенный в стандартную библиотеку модуль, без сторонних зависимостей.
import logging
from logging.handlers import RotatingFileHandler

def setup_rotating_logger(
    name: str,
    filename: str,
    max_bytes: int = 5 * 1024 * 1024,   # 5 МБ
    backup_count: int = 5                # хранить 5 ротаций
) -> logging.Logger:
    """
    Создаёт логгер с ротацией файлов при достижении размера.
    """
    logger = logging.getLogger(name)
    logger.setLevel(logging.INFO)
    if not logger.handlers:
        handler = RotatingFileHandler(
            filename,
            maxBytes=max_bytes,
            backupCount=backup_count,
            encoding='utf-8'
        )
        formatter = logging.Formatter('%(asctime)s | %(levelname)s | %(message)s')
        handler.setFormatter(formatter)
        logger.addHandler(handler)
    return logger

# Пример использования
if __name__ == "__main__":
    log = setup_rotating_logger('app_logger', 'app.log')
    for i in range(10000):
        log.info(f'Запись лога номер {i}')