Как правило логированием системных файлов занимается сама система и справляется с этим весьма неплохо
Но иногда тот или иной файл нужно логировать с параметрами которыми нужны исключительно вам. Например когда какой то из логов растет катастрофически быстро и забивает все свободное место на диске за час. Будем с этим бороться
Рассмотрим для примера основной файл куда пишутся логи, а именно syslog. В стандартном случае он ротируется раз в сутки самой системой. Но мы не будем трогать этот график, а добавим еще один.
Создайте новый файл конфигурации syslog со следующими настройками
sudo tee <<EOF >/dev/null /etc/logrotate.d/syslog /var/log/syslog { su root adm rotate 7 hourly size 1G missingok notifempty delaycompress compress postrotate /usr/lib/rsyslog/rsyslog-rotate endscript } EOF
rotate 7 Хранить до 7 ротированных файлов
hourly Ротировать каждый час
size 1G Ротировать, когда размер файла достигает 1 ГБ
missingok Не выдавать ошибку, если лог-файл отсутствует
notifempty Не ротировать пустые файлы
compress Сжимать ротированные файлы
Теперь logrotate
будет следить за файлом /var/log/syslog
и ротировать его каждый час если его размер достигнет 1 гигабайта. Ротированные файлы будут сжиматься, и будет сохранено до 7 последних ротированных файлов.
logrotate
обычно запускается автоматически по расписанию через cron
. Он обрабатывает все файлы конфигурации, расположенные в каталоге /etc/logrotate.d/
. Вы также можете запустить его вручную, выполнив команду:
sudo logrotate -f /etc/logrotate.d/syslog