日志分割的起因
随着时间的推移,catalina.out这个文件的尺寸将会越来越大,当需要检查日志内容时会导致文件难以打开,而且同时tomcat依旧在不断的向文件中输入内容,这也会降低tomcat的性能。因此将tomcat产生的catalina.out文件根据日期来分割,将每天产生的日志存放在一个独立的文件中,这样单个log文件就不会太大,而且过期的日志文件可以根据情况删除掉,或者备份到其他地方。(据说tomcat有默认的日志分割功能,能每天自动生成类似catalina.2010-10-08.log的文件,但是默认catalina.out文件却一直增长.)
以切分tomcat的catalina.out的日志为例
1安装cronolog
wget http://cronolog.org/download/cronolog-1.6.2.tar.gz
tar zxf cronolog-1.6.2.tar.gz
cd cronolog-1.6.2
./configure
make && make install
用which cronolog可以查到安装的路径,默认应该是/usr/local/sbin/cronolog,这个路径待会在修改catalina.sh时会用到。如下:
[root@localhost cronolog-1.6.2]# which cronolog
/usr/local/sbin/cronolog
2修改catalina.sh 这是重点
以Apache Tomcat/7.0.42为例
第一步:
将
if [ -z "$CATALINA_OUT" ] ; then
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
fi
修改为
if [ -z "$CATALINA_OUT" ] ; then
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out
fi
第二步:
将
touch "$CATALINA_OUT"
修改为
# touch "$CATALINA_OUT"
第三步:
将
org.apache.catalina.startup.Bootstrap "$@" start \
>> "$CATALINA_OUT" 2>&1 "&"
修改为
org.apache.catalina.startup.Bootstrap "$@" start 2>&1 \
| /usr/local/sbin/cronolog "$CATALINA_OUT" >> /dev/null & 总共有两处
3重启tomcat
在日志目录下就会多了一个catalina.2014-06-12.out的日志
日志切割成功
附:
以tomcat 6.0.20为例
按上面方法先安装cronolog
再修改catalina.sh文件
将
org.apache.catalina.startup.Bootstrap "$@" start \
>> "$CATALINA_BASE"/logs/catalina.out 2>&1 &
改为
org.apache.catalina.startup.Bootstrap "$@" start 2>&1 \
| /usr/local/sbin/cronolog "$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out >> /dev/null &
总共有两处 ****
将
touch "$CATALINA_BASE"/logs/catalina.out
改为
# touch "$CATALINA_BASE"/logs/catalina.out
重启TOMCAT