自定义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可以看到我们设置的定时任务,至此自定义日志切割完成。

 

 

 


posted @ 2020-03-13 14:38  葱香排骨面  阅读(417)  评论(0编辑  收藏  举报