linux — logrotate

logrotate

logrotate позволяет содержать в порядке директорию с логами.

/var/log/apache2/*.log {
    #rotate 60    # size restriction - Maximum 60 files. Not ! 60 days 
    maxage 30     # age restriction  - Maximum 30 days
    #minsize 10M  # rotates after weekly/daily IF EXCEEDED
    maxsize 1M    # if exceeded, rotates BEFORE weekly/daily
    daily       # should rotate weekly - see minsize/maxsize
    #weekly     # should rotate weekly - see minsize/maxsize
    dateext     
    dateformat -%Y%m%d # -%Y%m%d-%s
    #dateyesterday # the rotated log file has a date in its name 
                   # that is the same as the timestamps within it (for daily/weekly rotate)
    olddir olddir # olddir /var/log/apache2/olddir
    missingok     # no error msgs, if the log file is missing
    notifempty    # Do not rotate the log if it is empty
    compress
    delaycompress #Postpone compression of the previous log file to the next rotation cycle
    #copytruncate # copy logfile, after this truncate original - if program cannot reopen logfile
    #sharedscripts # run prerotate and postrotate scripts once for all files
    postrotate
        /etc/init.d/apache2 reload  > /dev/null
    endscript
    create 640 root adm
}

dateext принудит logrotate создавать файлы с именем, включающим текущую дату (типа kern.log-20131206 ), вместо малопонятных kern.log.1 kern.log.2 kern.log.3

minsize принудит ежедневно ротировать только логи больше указанного размера. Если есть способ сохранения ротируемых логов на удалённом сервере, то minsize использовать нельзя во избежание сохранения на сервере-источнике коротких логов навсегда — они не попадут в olddir никогда. Зато есть опция maxsize — ротация ежедневно И дополнительно ротировать, если размер превышен.

После редактирования надо запустить проверку:

#!sh
logrotate /etc/logrotate.conf

Типовой вариант для использования:

    maxage 10
    maxsize 100000
    daily
    dateext
    dateformat -%Y%m%d-%s
    olddir olddir
    missingok
    notifempty
    compress     
    delaycompress
    create 640 root adm

Типовой вариант для использования на старых системах:

    maxage 10
    #maxsize 100000
    daily
    dateext
    #dateformat -%Y%m%d-%s
    olddir olddir
    missingok
    notifempty
    compress     
    delaycompress
    create 640 root adm

Leave a Reply