Linux日志切割工具Logrotate配置详解

618 阅读2分钟

Logrotate 程序是一个日志文件管理工具。用于分割日志文件,压缩转存、删除旧的日志文件,并创建新的日志文件,下面就对logrotate日志轮转的记录

Logrotate手册

直接上配置


/data/log/nginx/access.log{
create 644 www root  
daily 
dateext  
rotate 90 
compress   
nodelaycompress
missingok
dateformat _%Y%m%d
dateyesterday
ifempty
olddir /data/log/nginx/backup/
sharedscripts
postrotate
[ -f /usr/local/nginx/logs/nginx.pid ] && kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
endscript
}

增加计划任务

#切割nginx日志 add xll in 20210914
0 0  * * *  /usr/sbin/logrotate -f /etc/logrotate.d/nginx

【以下注意!!!】

如果crontab中定义的执行时间是0点,则需要在/etc/logrotate.d/nginx/nginxLogrotate里添加上dateyesterday这个选项,否则日志内容记录的是昨天的,而 日志名称格式却是今天的,但crontab中定义的执行时间是23:59这样的则不用添加dateyesterday选项.

compress //通过gzip 压缩转储以后的日志
create mode www root //轮转时指定创建新文件的属性,如create 0777 nobody nobody
nocreate //不建立新的日志文件
nodelaycompress //覆盖 delaycompress 选项,转储同时压缩。
ifempty //即使日志文件为空文件也做轮转,这个是logrotate的缺省选项。
olddir /data/log/nginx/backup/ //转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
sharedscripts //运行postrotate脚本,作用是在所有日志都轮转后统一执行一次脚本。如果没有配置这个,那么每个日志轮转后都会执行一次脚本
postrotate //在logrotate转储之后需要执行的指令,例如重新启动 (kill -HUP) 某个服务!必须独立成行
daily //指定转储周期为每天
dateext //使用当期日期作为命名格式
dateformat .%s //配合dateext使用,紧跟在下一行出现,定义文件切割后的文件名,必须配合dateext使用,只支持 %Y %m %d %s 这四个参数
dateyesterday #如果定时任务时间设置的是0点就要配置此项,不然切割的内容是昨天的但是日志名却是当天的.

更多精彩关注公众号“51运维com” 个人博客