На главную

DevOps и серверы

Конфиг logrotate

Собирает файл для /etc/logrotate.d: частота или размер, сколько копий хранить, сжатие, create или copytruncate, su для каталогов не-root и postrotate, чтобы приложение переоткрыло лог. Тут же — оценка места на диске и команды проверки.

Какие логи

Маска *.log, а не * — иначе захватит уже повёрнутые копии

Когда и сколько

Вращать при превышении, независимо от частоты

По частоте, но и раньше, если файл вырос

По частоте, но не меньше этого размера

Сжатие и имена

Новый файл и права

Скрипты

/etc/logrotate.d/my-app

/var/log/my-app/*.log {
    daily
    rotate 14
    missingok
    notifempty
    compress
    delaycompress
    create 0640 root adm
}

Сколько займёт на диске

660 МБ

всего с текущим файлом

14

дней истории

200 МБ

один файл до сжатия

Текстовые логи жмутся в 10–20 раз: считаем gzip ≈ 10 %, zstd ≈ 8 %, xz ≈ 6 % исходного размера. Со своими логами проверьте: gzip -c файл | wc -c.

Установка и проверка

sudo install -m 0644 my-app /etc/logrotate.d/my-app
sudo logrotate -d /etc/logrotate.d/my-app   # сухой прогон: что сделал бы, ничего не трогая
sudo logrotate -f /etc/logrotate.d/my-app   # принудительно повернуть сейчас
grep -F '/var/log/my-app' /var/lib/logrotate/status   # когда вращали в последний раз