logrotate — standard Linux tool для управления log-файлами. Rotates (переименовывает), compresses, deletes old logs по расписанию. Установлен в большинстве distributions by default. Config в /etc/logrotate.d/. Запускается ежедневно через cron. Важно: postrotate hook для reload app после rotation (nginx, syslog).
Ниже: пошаговая инструкция, рабочие примеры, типичные ошибки, FAQ.
Бесплатный онлайн-инструмент — проверка HTTP-заголовков: результат мгновенно, без регистрации.
/var/log/myapp/*.logsystemctl reload nginx если нужен HUPlogrotate -d /etc/logrotate.d/myapp (debug mode, без изменений)logrotate -f /etc/logrotate.d/myapp| Сценарий | Конфиг |
|---|---|
| Standard nginx rotation | /var/log/nginx/*.log {
daily
rotate 14
compress
delaycompress
missingok
notifempty
create 640 nginx adm
sharedscripts
postrotate
systemctl reload nginx > /dev/null 2>&1 || true
endscript
} |
| Weekly с size limit | /var/log/myapp/*.log {
weekly
rotate 12
size 100M
compress
missingok
} |
| copytruncate (для apps без HUP handler) | /var/log/app.log {
daily
rotate 7
copytruncate
# Копирует файл и обрезает original на месте
} |
| Дата в имени rotated | /var/log/myapp/*.log {
daily
rotate 30
dateext
dateformat -%Y%m%d
compress
} |
| Тест без изменений | logrotate -d /etc/logrotate.d/myapp # debug, shows what would happen |
|| true — fail script blocks rotation/var/lib/logrotate/status обновляетсяЧтобы настроить logrotate в 2026 году, необходимо отредактировать файл конфигурации в /etc/logrotate.conf или создать отдельные файлы в /etc/logrotate.d/. Стандартная команда для ручного запуска logrotate выглядит так: logrotate -f /etc/logrotate.conf. Рекомендуется настраивать ротацию логов для каждого приложения отдельно, чтобы избежать потери данных и сохранить пространство на диске.
logrotate — это утилита для управления ротацией логов, которая позволяет автоматически удалять, сжимать и архивировать старые файлы логов. Для настройки logrotate необходимо учитывать следующие ключевые параметры:
Пример конфигурации для ротации логов веб-сервера:
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
systemctl reload nginx > /dev/null 2>&1 || true
endscript
}В этом примере логи Nginx будут ротацией ежедневно с сохранением последних 14 файлов, сжатыми после ротации.
Рассмотрим, как настроить logrotate для приложения Node.js, которое генерирует логи в файл /var/log/myapp/app.log. Создайте файл конфигурации в директории /etc/logrotate.d/ с именем myapp:
/var/log/myapp/app.log {
weekly
rotate 4
compress
delaycompress
missingok
notifempty
create 0640 myuser mygroup
postrotate
systemctl restart myapp
endscript
}В этом примере ротация будет происходить еженедельно, с сохранением 4-х файлов логов. После ротации приложение будет автоматически перезапущено для обновления лог-файла.
После создания конфигурационного файла проверьте его правильность с помощью команды:
logrotate -d /etc/logrotate.confФлаг -d позволяет запустить logrotate в режиме отладки, не производя реальных изменений. Это полезно для проверки конфигурации перед тем, как запускать ротацию в обычном режиме.
Для ручного запуска ротации используйте команду:
logrotate -f /etc/logrotate.confУбедитесь, что права доступа к логам и конфигурационным файлам установлены правильно, чтобы избежать ошибок при ротации. Настройка logrotate позволяет эффективно управлять пространством на диске и обеспечивает надежность хранения логов.
journald — built-in systemd, binary format, <code>journalctl</code>. logrotate — text files с compression. Для apps что пишут в файл — logrotate.
cron.daily — 1 раз в день. Для more frequent — hourly через /etc/logrotate.d/ и cron entry.
Same directory с суффиксом .1, .2, .gz etc. Example: access.log → access.log.1 → access.log.2.gz.
<code>logrotate -d</code> (dry-run) показывает что произойдёт. Status: <code>cat /var/lib/logrotate/status</code> — когда последний rotation.
Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.