自定义tomcat日志切割
最近因为项目中有问题需要定位到几天前的日志,上去服务器一看,发现tomcat的catalina.out文件日积月累,已经好几个g的大小了,这样的话肯定是不行的,到时候越来越大一打开这个文件可能就得卡死。所以就想到有没有什么办法能按天切割日志。
在网上找了一圈发现挺多都是用cronlog来做日志切割,看了下还得安装然后再去改catalina.sh,有点麻烦,于是想到用系统自带logrotate来做。
默认centos系统安装自带logrotate,如果没有,可以直接使用yum 安装
[root@along ~]# yum -y install logrotate
安装完成后,我们只需要在/etc/logrotate上新建个tomcat_catalina,写入以下配置然后保存就可以了。
/yourPath/tomcat/logs/catalina.out { daily #每天转储一次 rotate 30 #保存近30天的数据 missingok #在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误 notifempty #如果日志文件为空,轮循不会进行 dateext #让旧日志文件以创建日期命名 compress #对生成的文件进行压缩 delaycompress #与 compress一起使用,最新生成的文件不压缩 create 644 root root #以指定的权限创建全新的日志文件,同时logrotate也会重命 名原始日志文件 copytruncate #用于还在打开中的日志,将当前日志备份并截断 }
日志切割到此就完成了,但是由于logrotate文件夹下的文件是根据系统定义好的时间点去执行,虽然我们可以通过修改/etc/anacrontab来修改时间
但是这个影响是对整个目录下的文件都有效果,所以一般还是不建议去改动它,其实这个logrotate也是通过系统的定时任务去执行的,所以我们自己写个定时任务就可以了。首先我们建立个自定义目录/etc/logrotate.d0,然后把我们的tomcat_catalina文件放在该目录下,然后通过crontab -e命令设置一个定时任务
设置完成后保存并退出,此时输入crontab -l可以看到我们设置的定时任务,至此自定义日志切割完成。