Cronolog切割Tomcat日志

Linux上tomcat的日志输出在catalina.out里面,时间长了此文件将会很大,不便于查看,这里使用cronolog按一定时间分割日志。

配置cronolog

安装cronolog

1
2
3
4
5
tar zxvf cronolog-1.6.2.tar.gz
cd cronolog-1.6.2
./configure
make
make install

验证

查看cronolog安装后所在目录(验证安装是否成功)

1
which cronolog

一般情况下显示为:

1
/usr/local/sbin/cronolog

配置catalina.sh

修改 tomcat/bin 目录下的 catalina.sh 文件
下面的修改是针对tomcat8版本进行的
1、将196行注释掉,添加197行

1
2
3
4
if [ -z "$CATALINA_OUT" ] ; then
#CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out
fi

2、注释掉399行

1
2
3
4
5
6
shift
#touch "$CATALINA_OUT"
if [ "$1" = "-security" ] ; then
if [ $have_tty -eq 1 ]; then
echo "Using Security Manager"
fi

4、注释掉414行,添加413行内容

1
2
3
4
5
6
7
8
9
10
 eval $_NOHUP "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs="\"$JAVA_ENDORSED_DIRS\"" -classpath "\"$CLASSPATH\"" \
-Djava.security.manager \
-Djava.security.policy=="\"$CATALINA_BASE/conf/catalina.policy\"" \
-Dcatalina.base="\"$CATALINA_BASE\"" \
-Dcatalina.home="\"$CATALINA_HOME\"" \
-Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
org.apache.catalina.startup.Bootstrap "$@" start \
| /usr/local/sbin/cronolog "$CATALINA_BASE"/logs/catalina.out.%Y-%m-%d.out >> /dev/null &
#>> "$CATALINA_OUT" 2>&1 "&"

5、注释掉426行,添加425行内容

1
2
3
4
5
6
7
8
9
else
eval $_NOHUP "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs="\"$JAVA_ENDORSED_DIRS\"" -classpath "\"$CLASSPATH\"" \
-Dcatalina.base="\"$CATALINA_BASE\"" \
-Dcatalina.home="\"$CATALINA_HOME\"" \
-Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
org.apache.catalina.startup.Bootstrap "$@" start \
| /usr/local/sbin/cronolog "$CATALINA_BASE"/logs/catalina.out.%Y-%m-%d.out >> /dev/null &
#>> "$CATALINA_OUT" 2>&1 "&"

重启tomcat服务

这样在 /usr/local/tomcat/logs 每天会自动生成 catalina.%Y-%m-%d.out 文件。