Skip to content
EN

Как настроить logrotate

Коротко:

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.

Проверить свой сайт →

Пошаговая настройка

  1. Создайте /etc/logrotate.d/myapp
  2. Укажите путь к logs: /var/log/myapp/*.log
  3. Опции: daily / weekly / monthly (frequency)
  4. rotate N — количество старых копий хранить
  5. compress — gzip старые
  6. postrotate hook: systemctl reload nginx если нужен HUP
  7. Тест: logrotate -d /etc/logrotate.d/myapp (debug mode, без изменений)
  8. Ручной прогон: 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

Типичные ошибки

  • notifempty + пустой log — не rotated → через недели огромный пустой file
  • missingok опущен — logrotate errors при отсутствии log file
  • postrotate без || true — fail script blocks rotation
  • copytruncate теряет events, отправленные между copy и truncate
  • Rotation не работает — проверьте что /var/lib/logrotate/status обновляется

Как настроить logrotate — краткое руководство

Чтобы настроить logrotate в 2026 году, необходимо отредактировать файл конфигурации в /etc/logrotate.conf или создать отдельные файлы в /etc/logrotate.d/. Стандартная команда для ручного запуска logrotate выглядит так: logrotate -f /etc/logrotate.conf. Рекомендуется настраивать ротацию логов для каждого приложения отдельно, чтобы избежать потери данных и сохранить пространство на диске.

Основы настройки logrotate

logrotate — это утилита для управления ротацией логов, которая позволяет автоматически удалять, сжимать и архивировать старые файлы логов. Для настройки logrotate необходимо учитывать следующие ключевые параметры:

  • daily — ротация логов происходит ежедневно.
  • weekly — ротация логов происходит еженедельно.
  • monthly — ротация логов происходит ежемесячно.
  • rotate N — сохраняет последние N файлов логов, после чего старые файлы удаляются.
  • compress — сжимает старые файлы логов для экономии места.
  • notifempty — не ротация логов, если файл пуст.
  • create — создает новый файл лога с заданными правами.

Пример конфигурации для ротации логов веб-сервера:

/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

Рассмотрим, как настроить 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 позволяет эффективно управлять пространством на диске и обеспечивает надежность хранения логов.

Больше по теме

Часто задаваемые вопросы

logrotate vs journald?

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.

Куда идут rotated logs?

Same directory с суффиксом .1, .2, .gz etc. Example: access.log → access.log.1 → access.log.2.gz.

Rotation не работает — как debug?

<code>logrotate -d</code> (dry-run) показывает что произойдёт. Status: <code>cat /var/lib/logrotate/status</code> — когда последний rotation.

Запустить инструмент, который описан в этой статье

Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.