tomcat日志切割和定期删除

在tomcat的软件环境中,如果我们任由日志文件无限增长,总有一天会将磁盘占满的(废话)。特别是在日志文件增长速度很快的一些情况下,按日志切割日志文件并删除,就是一件很有必要的工作了,以下介绍了切割日志文件的方法。

第1章 系统环境

1.1 操作系统环境




1


2


3


4


5


6




​[root@server1 ~]​​​​# cat /etc/redhat-release​


​CentOS release 6.5 (Final)​


​[root@server1 ~]​​​​# uname -r​


​2.6.32-431.el6.x86_64​


​[root@server1 ~]​​​​# uname -m​


​x86_64​



1.2 jdk环境




1


2


3


4




​[root@server1 ~]​​​​# java -version​


​java version ​​​​"1.7.0_67"​


​Java(TM) SE Runtime Environment (build 1.7.0_67-b01)​


​Java HotSpot(TM) Server VM (build 24.65-b04, mixed mode)​



1.3 tomcat环境




1


2


3


4


5


6


7


8


9


10


11


12


13


14




​[root@server1 ~]​​​​# /opt/gw/tomcat7/bin/catalina.sh version​


​Using CATALINA_BASE:   ​​​​/opt/gw/tomcat7​


​Using CATALINA_HOME:   ​​​​/opt/gw/tomcat7​


​Using CATALINA_TMPDIR: ​​​​/opt/gw/tomcat7/temp​


​Using JRE_HOME:        ​​​​/usr/local/jdk1​​​​.7​


​Using CLASSPATH:       ​​​​/opt/gw/tomcat7/bin/bootstrap​​​​.jar:​​​​/opt/gw/tomcat7/bin/tomcat-juli​​​​.jar​


​Server version: Apache Tomcat​​​​/7​​​​.0.57​


​Server built:   Nov 3 2014 08:39:16 UTC​


​Server number:  7.0.57.0                ​​​​#<==tomcat-7.5.57版本​


​OS Name:        Linux​


​OS Version:     2.6.32-431.el6.x86_64​


​Architecture:   i386​


​JVM Version:    1.7.0_67-b01​


​JVM Vendor:     Oracle Corporation​



第2章 切割工具cronolog

2.1 cronolog的介绍

Cronolog是一个过滤器程序,它从标准输入读取日志文件条目,并将每个条目写入由文件名模板和当前日志所指定的输出文件中。 当扩展文件名改变时,关闭当前文件,并打开一个新文件。 Cronolog是为了与Apache等Web服务器一起使用,将访问日志分为每日或每月日志。

2.2 cronolog的安装

2.2.1 下载cronolog




1


2


3


4




​cd​​ ​​/usr/local/src​


​wget  https:​​​​//files​​​​.cnblogs.com​​​​/files/crazyzero/cronolog-1​​​​.6.2.​​​​tar​​​​.gz​


​[root@kafka01 src]​​​​# md5sum cronolog-1.6.2.tar.gz​


​a44564fd5a5b061a5691b9a837d04979  cronolog-1.6.2.​​​​tar​​​​.gz         ​​​​#<==cronolog的MD5码​



2.2.2 编译安装




1


2


3


4


5


6




​[root@kafka01 src]​​​​# tar xf cronolog-1.6.2.tar.gz​


​[root@kafka01 src]​​​​# cd cronolog-1.6.2​


​[root@kafka01 cronolog-1.6.2]​​​​# ./configure          #<==编译,此前先确保安装cmake等编译工具​


​[root@kafka01 cronolog-1.6.2]​​​​# make && make install #<==安装​


​[root@kafka01 cronolog-1.6.2]​​​​# which cronolog       #<==检查是否安装成功,如果有结果则安装成功​


​/usr/local/sbin/cronolog​



2.3 cronolog命令




1


2


3


4


5


6


7


8


9




​[root@server1 ~]​​​​# which cronolog​


​/usr/local/sbin/cronolog​​            ​​#<==cronolog命令的存放路径​


​使用​​​​man​​​​帮助命令查看cronolog使用语法:​


​[root@server1 ~]​​​​# man cronolog​


​NAME​


​cronolog - write log messages to log files named according to a template​


 


​SYNOPSIS​


​cronolog [OPTION]... template​



第3章 配置tomcat日志切割

配置日志切割,只需修改配置文件catalina.sh(如果windows则是catalina.bat,这里不介绍windows情况)即可。大概在catalina文件中的第380行和第390行左右,修改如下:

(1)内容:




1


2




​org.apache.catalina.startup.Bootstrap ​​​​"$@"​​ ​​start \​


​>> ​​​​"$CATALINA_OUT"​​ ​​2>&1 ​​​​"&"​



替换为:




1


2




​org.apache.catalina.startup.Bootstrap ​​​​"$@"​​ ​​start \​


​2>&1 |​​​​/usr/local/sbin/cronolog​​ ​​"$CATALINA_BASE/logs/catalina-%Y-%m-%d.out"​​ ​​&​



(2)内容:




1


2




​org.apache.catalina.startup.Bootstrap ​​​​"$@"​​ ​​start \​


​>> ​​​​"$CATALINA_OUT"​​ ​​2>&1 ​​​​"&"​



替换为:




1


2




​org.apache.catalina.startup.Bootstrap ​​​​"$@"​​ ​​start \​


​2>&1 |​​​​/usr/local/sbin/cronolog​​ ​​"$CATALINA_BASE/logs/catalina-%Y-%m-%d.out"​​ ​​&​



配置完成后,重启tomcat即可!!!!

第4章 定时删除过期日志

在这里直接使用linux自带的crontab定时任务工具,设置每天凌晨00:00执行删除任务,删除7天以前的日志文件。




1


2




​crontab​​ ​​-e          ​​​​#<==直接输入该命令,添加一个定时任务计划​


​00 00 * * * ​​​​/bin/find​​ ​​/opt/gdyy/tomcat7/logs/​​ ​​-​​​​type​​ ​​f -mtime +7 | ​​​​xargs​​ ​​rm​​ ​​-f  &>​​​​/dev/null​​  ​​#<==查找tomcat/logs下面的日志文件,并删除7天以前的日志,添加完成后保存退出!!​





1


2


3




​[root@server1 ~]​​​​# crontab -l    #<==查看定时任务计划​


​#remove gw log 7 days ago by liutao at 2018-02-08​


​00 00 * * * ​​​​/bin/find​​ ​​/opt/gw/tomcat7/logs/​​ ​​-​​​​type​​ ​​f -mtime +7 | ​​​​xargs​​ ​​-i ​​​​mv​​ ​​{} ​​​​/data/bak/gw_log/​​  ​​&>​​​​/dev/null​



tomcat日志切割并定时删除完成!!!