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}')