使用cronolog切割Tomcat7及之后版本日志

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

你可能感兴趣的:(使用cronolog切割Tomcat7及之后版本日志)