日志切割之logrotate

logrotate简介:

  logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”。我们可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过 cron 程序来执行。logrotate 程序还可以用于压缩日志文件,以及发送日志到指定的E-mail 。

logrotate配置:

  主配置文件:

    /etc/logrotate.conf

  内容如下:

# see "man logrotate" for details
# rotate log files weekly-->指定日志转储周期为每周
weekly

# keep 4 weeks worth of backlogs-->指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份,即切分次数
rotate 4

# create new (empty) log files after rotating old ones-->是否创建新的日志文件在切分完老的日志后
create

# use date as a suffix of the rotated file-->使用日期作为切分文件的前缀
dateext

# uncomment this if you want your log files compressed-->是否对日志文件进行压缩
#compress

# RPM packages drop log rotation information into this directory-->包含/etc/logrotate.d下面所有的配置项
include /etc/logrotate.d

# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
    monthly
    create 0664 root utmp
        minsize 1M
    rotate 1
}

/var/log/btmp {
    missingok
    monthly
    create 0600 root utmp
    rotate 1
}

# system-specific logs may be also be configured here.

  然后在/etc/logrotate.d/目录下可自行定义要切割的日志文件,先看一个系统默认的syslog的配置:

/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
    sharedscripts
    postrotate   //在转储以后需要执行的命令,这个关键字必须单独成行
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript 
}

  再来看一个切分nginx的日志配置:

/var/logs/nginx/*.log
{
        rotate 180    //转储次数
        copytruncate  //用于还在打开中的日志文件,把当前日志备份并截断
        daily  //转储周期:每天
        dateext  //转储前缀
        compress  //启用压缩
        missingok  //如果日志文件丢失,继续下一个而不输出报错信息
}

  再来看一个Logstash的日志切分配置:

/var/log/logstash/*.log
/var/log/logstash/*.err 
/var/log/logstash/*.stdout 
{
        daily
        rotate 7
        copytruncate
        compress
        delaycompress  //和compress一起使用时,转储的日志文件到下一次转储时才压缩
        missingok
        notifempty  //如果是空文件的话,不转储
}

  可以根据需要,自行在/etc/logrotate.d/下定义即可,定义好后,配合crontab可实现日志自动切割:

0 0 * * * /usr/sbin/logrotate -f /etc/logrotate.conf > /dev/null 2>&1

  一般情况下,主配置文件无需修改。

原文地址:https://www.cnblogs.com/trymybesttoimp/p/7249362.html