Tomcat日志分割的三种方法

Logs下会产生catalina.out managerxx.log localhostxx.log 等各种日志,建议安装新的tomcat之后,把webapps下面的doc,examples,host-manger,manger都删除,root下也清空放入自己的功能页面,虽然删除以上几个应用,但是logs下还会产生对应的日志文件,修改conf/ logging.properties 文件,把如下地方注释:

#2localhost.org.apache.juli.FileHandler.level = FINE

#2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs

#2localhost.org.apache.juli.FileHandler.prefix = localhost.

#3manager.org.apache.juli.FileHandler.level = FINE

#3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs

#3manager.org.apache.juli.FileHandler.prefix = manager.

#4host-manager.org.apache.juli.FileHandler.level = FINE

#4host-manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs

#4host-manager.org.apache.juli.FileHandler.prefix = host-manager.

即便如此,logs下面的catalina.out还是会一直堆积在一个文件当中,使用以下方法可以让日志进行按日切割。

方法1:cronlog工具

下载cronlog工具

# wget http://www.mrliangqi.com/pack/cronolog-1.6.2.tar.gz

# tar xf cronolog-1.6.2.tar.gz 压缩进入目录

# ./configure && make && make install 编译安装

成功之后,运行which cronolog会找到对应的路径:

# which cronolog

/usr/local/sbin/cronolog

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

这样每天就会产生一个catalina.xxx.log的文件。零点自动分割。

方法2:纯shell脚本实现

把下面内容保存到shell脚本中,放置于tomca的bin目录下。再配置计划任务即可。

#!/bin/bash

cd `dirname $0`

d=`date +%Y%m%d`

d7=`date -d'7 day ago' +%Y%m%d`

cd ../logs/

cp catalina.out catalina.out.${d}

echo "" > catalina.out

rm -rf catalina.out.${d7}

方法3:自动截断

1)编辑自动隔断规则

编辑/etc/logrotate.d/tomcat,输入下列内容 :

/usr/local/tomcat/logs/catalina.out { ##日志路径根据实际确定

rotate 7 ##循环保留7个日志

compress ##压缩

copytruncate ##表示先复制log文件的内容,然后再清空

daily ##表示每天整理一次

dateext ##在归档文件后,将会使用日期进行标注

missingok ##表示如果找不到log文件也OK

}

2)强制执行

/usr/sbin/logrotate -f /etc/logrotate.conf

如果因运行时间太久导致catalina.out太大,而没有足够的空间,则可能失败,可以先清空其内容。

echo > /usr/local/tomcat/logs/catalina.out

3)自动执行

默认情况下,每天会自动执行,但是如果没有足够的空间会报错。

 


发表评论

登录 后发表评论.