logrotate是个强大的系统软件,它对日志文件有着一套完整的操作模式,譬如:转储、邮件和压缩等,并且默认logrotate加到cron(/etc/cron.daily/logrotate)作为每日任务执行。自动有了logrotate
1.配置logrotate对catalina.out日志切割脚本
shell> vim /etc/logrotate.d/tomcat
/usr/local/apache-tomcat-7.0.70/logs/catalina.out {
#将/usr/local/apache-tomcat-7.0.70/logs/catalina.out 替换为自己的tomcat日志路径
#指定转储周期为每天
daily
#用于还在打开中的日志文件,把当前日志备份并截断
copytruncate
#以YYYYMMDD命名,也就是切割后文件是:xxx.log-20150828.gz
dateext
#如果日志不存在则忽略该警告信息
missingok
#通过gzip压缩转储以后的日志(gzip -d xxx.gz解压)
compress
#如果是空文件的话,不转储
notifempty
#指定日志文件删除之前转储的次数,0指没有备份,7指保留5个备份
rotate 7
#达到指定容量时才开始截断
size 50M
#截断日志后的操作,删除目录下大于7天的*.log和*.txt文件
postrotate
find /usr/local/apache-tomcat-7.0.70/logs/ \( -name "*.log" -o -name "*.txt" \) -mtime +7 -delete
endscript
}
2. 授权脚本执行权限
shell> chmod 755 /etc/logrotate.d/tomcat
#配置完后查看是否生效,执行后查看tomcat日志目录下是否有压缩文件产生
shell> ls -lh /usr/local/apache-tomcat-7.0.70/logs/catalina.out*
3. 加入定时任务
shell> crontab -e
#在打开的文件尾部添加,说明,每日0点执行,不保留记录
0 0 * * * /usr/sbin/logrotate -f /etc/logrotate.conf >/dev/null 2>&1
#重启服务
shell> /etc/init.d/crond restart
#或
shell> service crond restart