Skip to content

Настройка logrotat

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

Настройка происходит на FreeBSD:

make -C /usr/ports/sysutils/logrotate/ install clean
cp /usr/local/etc/logrotate.conf.sample /usr/local/etc/logrotate.conf
weekly
rotate 4
# отправлять errorsы root
errors root
create
compress
include /usr/local/etc/logrotate.d

/var/log/lastlog {
    monthly
    rotate 1
}

Если планируется не отказываться от стандартного newsyslog - то тогда надо убрать лишнее из конфига

/var/log/lastlog {
    monthly
    rotate 1
}

Создаём каталог если его нету

mkdir /usr/local/etc/logrotate.d

и кладём туда конфиг например для nginx

vi /usr/local/etc/logrotate.d/nginx
/var/log/nginx/*.log {
        daily
        missingok
        rotate 30
        compress
        delaycompress
        notifempty
        create 640 root
        sharedscripts
        postrotate
                [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
        endscript
}
  • daily – ротацию проводить раз в день
  • weekly – ротацию проводить раз в неделю
  • size=16M - максимальный размер несжатого файла; пока размер текущего
  • rotate 30 – число отротейтченых файлов, (dtulyakov.ru.access.log будет содержать 30 файлов, при превышении этого числа самый старый будет заменятся.)
  • missingok – отсутствие файла не является ошибкой
  • compress – сжимать файлы при ротации
  • delaycompress – первый ротированный файл не сжимать
  • nodelaycompress - не откладывать сжатие файла на следующий цикл
  • notifempty – уведомлять о том что файл был пустой.
  • create 640 root – с какими правами и владельцем будет создан новый файл
  • nocreate - не создавать пустой журнал
  • nocopytruncate - не сбрасывать файл журнала после копирования
  • copytruncate - сбрасывать файл журнала после копирования
  • nomail - не отправлять содержимое удаляемых (старых) журналов по почте
  • noolddir - держать все файлы в одном и том же каталоге
  • olddir - держать старые файлы в другом каталоге
  • sharedscripts – выполнять действия описанные в postrotate 1 раз, а не на каждый файл
  • postrotate - что делать после ротации
  • endscript - Между postrotate и endscript расположены команды интерпретатора sh(1), исполняемые непосредственно после ротации.
crontab -e
30       *       *       *       *       /usr/local/sbin/logrotate /usr/local/etc/logrotate.conf