1、logrotate常用选项
选项 | 含义 |
compress | 压缩日志文件的所有非当前版本 |
nocompress | 不需要压缩时,用这个参数 |
copytruncate | 用于还在打开中的日志文件,把当前日志备份并截断 |
nocopytruncate | 备份日志文件但是不截断 |
daily, weekly, monthly | 以指定的时间安排来轮换日志文件 |
delaycompress | 压缩除了当前和最近之外的所有其他版本 |
dateext | 切割后的日志文件以当前日期为格式结尾、xxx.log-20131216,默认是数字 |
endscript | 标记prerotate或者postrotate脚本结束 |
errors emailaddr | 向指定的emailaddr发送出错通知邮件 |
missingok | 如果日志不存在,不会发出抱怨 |
notifempty | 如果日志为空,则不轮换它 |
olddir dir | 指定要放入dir里的日志文件老版本 |
postrotate | 引入在轮换过日志之后要运行的脚本 |
prerotate | 引入在进行任何改动之前运行的脚本 |
rotate n | 在轮换方案中包括n个版本的日志 |
sharedscripts | 只为整个日志组运行一次的脚本 |
size=logsize | 如果日志文件大于logsize(例如,100K,4M)才轮换 |
2、配置样例
2.1 切割nginx日志
#!/bin/bash
/var/log/nginx/*.log {
rotate 180
daily
dateext
dateformat .%Y-%m-%d
missingok
notifempty
sharedscripts
delaycompress
# copytruncate
size=100M
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
#切割日志完成后通知nginx重新打开日志文件,不终止nginx
endscript
}
2.2 切割tomcat日志
#!/bin/bash
/usr/local/tomcat8080/logs/catalina.out /usr/local/tomcat8080/logs/gateway.log {
rotate 30
daily
dateext
missingok
notifempty
compress
size +200M
sharedscripts
delaycompress
copytruncate
}
3、加入计划任务
chmod 644 /usr/local/sbin/nginxlogcut
echo '30 2 * * * /usr/sbin/logrotate -f /usr/local/sbin/nginxlogcut &' >>/var/spool/cron/root