logrotate日志切割

1 logrotate原理

一般在服务器初始化的时候这些工具都已经存在的,服务的主配置文件:/etc/logrotate.conf,在主配置中可以看到 include /etc/logrotate.d 说明可以将用户定义的配置直接放到这下面,系统会自动为我们执行。logrotate的原理就是一个cron job;每天定时触发执行对应脚本;可在系统日志中查看到相关执行的日志信息。

 

2 logrotate每小时切割日志

logrotate切割nginx日志,创建nginx的日志切割文件,放在目录/etc/logrotate.d下面。

vim /etc/logrotate.d/nginx
# 添加以下配置

/usr/local/openresty/nginx/logs/*.log
/usr/local/nginx/logs/*.log {
        hourly
        missingok
        rotate 7
        dateext
        notifempty
        nocompress
        create 640 root root
        sharedscripts
        postrotate
        if [ -f /usr/local/nginx/logs/nginx.pid ]; then
            kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
        fi
        endscript
}

参数详解:

compress日志轮替时候对旧日志就行 gzip 压缩
nocompress不压缩
daily按天轮替
dateext使用当前日期命名旧日志
dateformat .%s对日期进行格式定制
ifempty日志没有内容的时候也进行轮替
notifempty日志是空的就不轮替
mail将轮替后的文件发送到指定E-mail地址
nomail不发邮件
copytruncate轮替时候先拷贝日志,备份拷贝文件,在清空本来的文件,这样不会导致轮替后原文件消失,缺点就是可能丢失小部分日志
monthly一个月轮替一次
olddir轮替后日志文件放入指定的目录
rotate轮替最多保留之前的数据几次
size当日志增长到指定大小的时候开始轮替
weekly按周轮替
yearly按年轮替
Missingok如果日志丢失,不报错继续滚动下一个日志

配置logrotate执行周期
把/etc/cron.daily/logrotate执行文件拷贝到目录/etc/cron.hourly即可,logrotate会每小时执行一次切割操作。

注意:hourly 表明每小时执行,必须要配置,因为放在/etc/cron.daily下面的任务每天才触发一次,它每次触发会读取/etc/logrotate.d/mylog配置,虽然它识别出这里配置了hourly,但是调用者本身每天才调用一次


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值