tomcat日志切割和日志定时清理

Posted makes

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tomcat日志切割和日志定时清理相关的知识,希望对你有一定的参考价值。

在最近项目中的tomcat日志没有做系统分割,日志越来越大,每次排查生产问题都会话好长时间,并且日志文件很大。所以就想写一个shell脚本进行定时将日志进行切割。

#!/bin/bash
source /home/mfls/.bash_profile
cd `dirname $0`
d=`date +%Y%m%d%H%M%S`
d7=`date -d7 day ago +%Y%m%d`
cd ../logs/
cp catalina.out catalina.out.${d}
echo "" > catalina.out

这个脚本每次执行的时候会将当前文件加上当时的时分秒进行分割日志。

分割后的日志名以catalina.out.20200604030303进行备份


系统正常运行一段时间后,会产生大量的切割数据,一般排查生产问题会在一周内进行排查,防止一周内未解决。所以将日志进行一个定时删除。

所以还需要一个脚本进行删除30天之前日志和其他文件。

#!/bin/sh
source /home/mfls/.bash_profile
find /home/mfls/tomcat6/logs/ -mtime +30 -name "host-manager.*" -exec rm -rf {} ;
find /home/mfls/tomcat6/logs/ -mtime +30 -name "localhost.*" -exec rm -rf {} ;
find /home/mfls/tomcat6/logs/ -mtime +30 -name "catalina.out.*" -exec rm -rf {} ;
find /home/mfls/tomcat6/logs/ -mtime +30 -name "manager.*" -exec rm -rf {} ;  

find --> 查找路径

-mtime +30 --> 表示30天之前的文件

-name "catalina.out.*" -->  表示通配文件名

* --> 表示通配符

-exec --> 表示执行

rm -rf --> 表示删除

{}--> 所有找到的内容会放入到{}中

--> 表示语句结束   

 


这两个文件可以整合成一个文件,写两个文件的话会显示比较方便管理

#!/bin/bash
source /home/mfls/.bash_profile
cd `dirname $0`
d=`date +%Y%m%d%H%M%S`
d7=`date -d7 day ago +%Y%m%d`
cd ../logs/
cp catalina.out catalina.out.${d}
echo "" > catalina.out
echo "日志分割完成"
find /home/mfls/tomcat6/logs/ -mtime +30 -name "host-manager.*" -exec rm -rf {} ;
find /home/mfls/tomcat6/logs/ -mtime +30 -name "localhost.*" -exec rm -rf {} ;
find /home/mfls/tomcat6/logs/ -mtime +30 -name "catalina.out.*" -exec rm -rf {} ;
find /home/mfls/tomcat6/logs/ -mtime +30 -name "manager.*" -exec rm -rf {} ;  
 

添加定时任务到linux

crontab -e

0 2 * * * /home/mfls/logs/bin/clearLogs.sh


每天凌晨两点执行切割和清理。

 

以上是关于tomcat日志切割和日志定时清理的主要内容,如果未能解决你的问题,请参考以下文章

Shell脚本实现 tomcat 日志定时切割

tomcat集群日志切割和远程备份脚本分享

tomcat集群日志切割和远程备份脚本分享

Tomcat 日志分割.

ubuntu 定时备份清理tomcat日志,并且删除七天之前的日志

linux定时任务之清理tomcat catalina.out日志