Python logging: ротировать файл логов по времени
TimedRotatingFileHandler разделяет журнал на файлы по расписанию и ограничивает число старых архивов. Это предотвращает бесконтрольный рост одного logfile в долго работающем сервисе.
Рабочий пример
import logging
from logging.handlers import TimedRotatingFileHandler
logger129 = logging.getLogger("demo.rotation")
logger129.setLevel(logging.INFO)
handler129 = TimedRotatingFileHandler(
"/tmp/demo-rotation.log", when="midnight",
backupCount=7, encoding="utf-8", utc=True)
logger129.addHandler(handler129)
logger129.info("service started")
handler129.close()
logger129.removeHandler(handler129)
print(handler129.backupCount) # 7when задаёт интервал ротации, backupCount — сколько архивов оставить. utc=True делает время смены предсказуемым относительно часового пояса процесса.
Частый вопрос
Как ротировать файл при достижении размера?
Используйте RotatingFileHandler с maxBytes и backupCount. Выберите один механизм ротации, чтобы приложение и logrotate не переименовывали один файл одновременно.