Как настроить ротацию логов во FreeBSD

Обновлено и опубликовано Опубликовано:

Для начала установим logrotate, так как по умолчанию его нет во FreeBSD:

# pkg install logrotate

Теперь создадим файл с настройкой ротации логов. Удобнее для каждой службы создавать отдельную конфигурацию, например:

# ee /usr/local/etc/logrotate.d/oracle

и добавте в него следующее:

/u01/app/oracle/diag/tnslsnr/listener/alert/*.xml {
        rotate 5
        missingok
        notifempty
        daily
        compress
        nocreate
        maxage 30
}

В данном примере создана конфигурация для ротации логов ORACLE по следующему принципу:

Искать все файлы, заканчивающиеся на .xml в каталоге /u01/app/oracle/diag/tnslsnr/listener/alert.
rotate 5 — хранить последние 5 ротированных файлов. Остальные удалять.
missingok — если файла не существует, не выкидывать ошибку.
notifempty — если файл пустой, не выполнять никаких действий.
daily — делать ротацию каждый день.
compress — сжимать ротированные файлы.
nocreate — не создавать новый файл.
maxage 30 — хранить ротированные файлы за последние 30 дней. Остальные удалять.

Данных параметров больше. Вот неплохое описание параметров logrotate.

Чтобы вручную запустить ротацию, введите следующую команду:

# logrotate -f /usr/local/etc/logrotate.d/oracle

Для автоматического запуска необходимо создать задание в cron:

0 0 * * * /usr/local/sbin/logrotate /usr/local/etc/logrotate.conf

* в данном примере задание будет выполняться каждый день в 00:00