美文网首页
使用cronolog切割Tomcat7及之后版本日志

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

作者: 己乙孔 | 来源:发表于2017-08-23 15:38 被阅读66次

    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及之后版本日志

          本文链接:https://www.haomeiwen.com/subject/gsoddxtx.html