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
一般情况下,主配置文件无需修改。