一、背景
系统每天凌晨1:59查看/data/nginx/log
日志文件的大小,如果小于10M,不做任何处理,如果大于等于10M,触发日志转储,
转储后/data/nginx/log的大小为0,并且会在/data/nginx/logs/
下生成一个通过gzip压缩的以当前日期命名的.gz文件
注意:该配置算不上是日志切割,因为当日志文件为25M时,也会归档为一个文件,并不是以10M为单位进行分割,只能称为日志转储。
二、日志切割配置文件/etc/logrotate.conf
cat > /etc/logrotate.conf << EOF
/data/nginx/log {
missingok
notifempty
create 0640 root root
compress
dateext
olddir /data/nginx/logs/
rotate 50
size 10M
}
EOF
相关解释:
/data/nginx/log #表示要做切割的日志文件名
missingok #在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误
notifempty #如果日志文件为空,轮循不会进行
create 0640 root root #以指定的权限创建全新的日志文件
compress #在轮循任务完成后,使用gzip压缩归档文件
dateext #使用当前日期作为归档文件的命名格式
olddir /data/nginx/logs/ #指定归档文件存放到/data/nginx/logs/目录下,/data/nginx/logs/需提前创建
rotate 50 #最多存储50个归档文件,当生成第51个归档文件时,第1个会被删除
size 10M #当监听文件达到10M时进行切割归档
三、设置定时任务
echo "59 01 * * * /usr/sbin/logrotate -v /etc/logrotate.conf &> /var/log/logrotate.log" >> /var/spool/cron/root
crond start