logrotate分割日志文件

昨天参与作的线上项目上线了,看了下log文件竟然尚未分割,考虑到可能致使log文件很大形成性能降低,赶忙作了下日志分割。Linux下有个logrotate工具能够协助日志分割,只须要配置一下参数就能够了,很是方便,因而采用这种方式直接配置了一下。nginx

我是用来作nginx日志文件分割的,个人配置文件以下:编程

在/etc/logrotate.d/目录下建立一个配置文件例如nginx,文件内容以下:工具

/search/nginx/logs/access_log /search/nginx/logs/error.log{
daily
dateext
extension .log
create
rotate 60
notifempty
sharedscripts
postrotate
[ ! -f /usr/local/nginx/sbin/nginx.pid ] || kill -USR1 `cat /usr/local/nginx/sbin/nginx.pid`
endscriptpost

}性能

字段的含义分别是:日志

daily 天天分割一次crontab

dateext 表示用日志格式来表示日志文件,这样日志名就改为access-20140626ip

extension .log 表示在日志名后面再加上 .log后缀名  日知名编程access-20140626.logio

create 表示分割好以后建立新的日志文件 即建立access.log配置

rotate 60 表示备份这么多份

notifempty 表示日志文件若是为空的话就不作分割

sharedscripts 表示多个日志文件之间 只执行一次logrotate

postrotate
[ ! -f /usr/local/nginx/sbin/nginx.pid ] || kill -USR1 `cat /usr/local/nginx/sbin/nginx.pid`
endscript 

表示的是执行完logrotate以后,执行那个命令

还有不少其余的参数,具体能够 man logrotate查看。

我在配置完logrotate以后觉得得置crontab文件 来让logrotate定时执行,因而:

crontab -e

59 23 * * * /usr/sbin/logrotate -f /etc/logrotate.d/nginx

结果次日来看发现分割了两次,23:59的时候分割了一次,04:02的时候也分割了一次,才知道原来logrotate是会自动执行的,时间是4点的时候,也能够修改配置文件来修改时间,因此不用再设定crontab文件。

在拷贝和清空之间有一个时间差,因此可能会丢失部分日志数据。

相关文章
相关标签/搜索