tomcat日志切割可以极大提高排查时的效率。项目一开始就切割为宜。
1. 安装cronolog
安装cronolog有多种方式,本文使用rpm安装。
# 安装cronolog
cd /usr/local/src/
rpm -ivh cronolog-1.6.2-10.el6.x86_64.rpm
# 查看二进制文件位置
which cronolog
# 记住位置,此处为默认的 /usr/sbin/cronolog
2. 修改Tomcat相关文件
a. catalina.sh
共需修改四处
# 进入catalina.sh所在文件夹,一般在Tomcat的bin目录下
cd ${TOMCAT_HOME}/bin
vim catalina.sh
第一处修改,为输出日志添加日期
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.log
fi
第二处修改,注释掉CATALINA_OUT
touch "$CATALINA_OUT"
--->
#touch "$CATALINA_OUT"
第三、四处修改,使用cronolog切割日志
org.apache.catalina.startup.Bootstrap "$@" start \
>> "$CATALINA_OUT" 2>&1 "&"
--->
org.apache.catalina.startup.Bootstrap "$@" start 2>&1 \
| /usr/sbin/cronolog "$CATALINA_OUT" >> /dev/null &
3. 启动/重启Tomcat
cd ${TOMCAT_HOME}/bin
./startup.sh
4. shell脚本
- 写脚本运行,
vi cut_catalina_out.sh
#!/bin/sh
# script_name=cut_catalina_out.sh
# 设置备份日期
TODAY=`date +%Y%m%d`
# 备份catalina.sh
cp catalina.sh catalina.sh.bak$TODAY
# 将不以"#"开头的符合正则的行替换
sed -i '/^#/!s/catalina.out/catalina.%Y-%m-%d.log/g' catalina.sh
# 此处的"&"表示引用正则匹配的部分
sed -i 's/touch "$CATALINA_OUT"/#&/g' catalina.sh
# 使用"\"转义"\"
sed -i 's/start \\/start 2>\&1 \\/g' catalina.sh
# 使用"\"转义"&";使用"@"代替原本的"/"
sed -i 's@>> "$CATALINA_OUT" 2>&1 "&"@| /usr/sbin/cronolog "$CATALINA_OUT" >> /dev/null \&@g' catalina.sh
- 直接交互界面执行命令
cp catalina.sh catalina.sh.bak`date +%Y%m%d`; sed -i -e '/^#/!s/catalina.out/catalina.%Y-%m-%d.log/g' -e 's/touch "$CATALINA_OUT"/#&/g' -e 's/start \\/start 2>\&1 \\/g' -e 's!>> "$CATALINA_OUT" 2>&1 "&"!| /usr/sbin/cronolog "$CATALINA_OUT" >> /dev/null \&!g' catalina.sh
网友评论