logrotate архивирует, сжимает и удаляет старые логи по расписанию.
Конфиг для nginx уже есть в /etc/logrotate.d/nginx. Пример для своего приложения:
/var/log/myapp/*.log {
daily
rotate 14
compress
delaycompress
missingok
notifempty
create 0640 www-data adm
postrotate
systemctl reload myapp
endscript
}
Ключевые директивы:
rotate 14— хранить 14 файлов, потом удалятьcompress/delaycompress— сжимать в gzip, но не текущийmissingok— не падать, если лог отсутствуетpostrotate— перезагрузить сервис после ротации (иначе он пишет в старый fd)
# проверить конфиг без применения
logrotate -d /etc/logrotate.d/myapp
# принудительная ротация
logrotate -f /etc/logrotate.d/myapp
Состояние ротации хранится в /var/lib/logrotate/status — там видно, когда каждый файл ротировался последний раз.
#linux #nginx #sysadmin #logs
