• tomcat 日志拆分


    一、用cronolog分割tomcat的catalina.out文件
    1、编译安装cronolog
    wget http://cronolog.org/download/cronolog-1.6.2.tar.gz
    tar zxvf cronolog-1.6.2.tar.gz
    cd cronolog-1.6.2
    ./configure
    make && make install
    2、查看cronolog安装后所在目录(验证安装是否成功)
    which cronolog
    一般情况下显示为:/usr/local/sbin/cronolog
    3、编辑tomcat目录bin下的catalina.sh文件
    找到下面这行,类似这样的行有2处:
    org.apache.catalina.startup.Bootstrap "$@" start
    >> "$CATALINA_OUT" 2>&1 &
      第一处:tomcat是带“-security”参数的启动,
      第二处:默认tomcat启动方式,也就是else下面的那部分,我们只修改这里。
      另外还要把touch “$CATALINA_OUT"这行注释掉。
    # touch "$CATALINA_OUT"
    if [ "$1" = "-security" ] ; then
    if [ $have_tty -eq 1 ]; then
    echo "Using Security Manager"
    fi
    shift
    "$_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
    >> "$CATALINA_OUT" 2>&1 &

    else
    "$_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 2>&1 | /usr/local/sbin/cronolog /usr/local/tomcat/logs/catalina.%Y%m%d.out >> /dev/null &
    # >> "$CATALINA_OUT" 2>&1 &

    fi
    4、重启tomcat

    二、使用log4j成功使catalina.out文件实现分割
    在tomcat根目录下建立common/classes/log4j.properties,内容如下
    log4j.rootLogger=INFO, R
    log4j.appender.R=org.apache.log4j.RollingFileAppender
    log4j.appender.R.File=${catalina.home}/logs/tomcat.newlog #设定日志文件名
    log4j.appender.R.MaxFileSize=100KB #设定文件到100kb即分割
    log4j.appender.R.MaxBackupIndex=10 #设定日志文件保留的序号数
    log4j.appender.R.layout=org.apache.log4j.PatternLayout
    log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
    2、在tomcat根目录下的common/lib下加入log4j.jar和commons-logging.jar
    3、重新启动tomcat即可。
    三、编写一个.sh文件,并放到tomcat下的bin目录,在cron中自动执行,shell脚本如下:
    #!/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}

    四、在/etc/logrotate.d下新建文件。tomcat
    编辑该文件,写入脚本。 vim /etc/logrotate.d/tomcat
    /opt/tomcat/logs/catalina.out { # catalina.out日志路径
    copytruncate # 复制清空
    rotate 15 # 保留15份日志
    nocompress # 不压缩日志
    missingok # 日志不存在时不报错
    size 100k # 超过100k就复制
    }
    说明:该脚本会随着cron.daily(系统自带定时器)每天执行一次,如果此时catalina.out文件大小超过100k, 就会复制一份catalina.out-yyyyMMdd出来,然后清空catalina.out文件
    已验证,当size比较小时,与按日期拆分效果一致

  • 相关阅读:
    大数据Hadoop-2
    大数据Hadoop-1
    Consistent Hashing
    分支的创建、删除、切换、合并以及冲突解决
    windows WEB 高可用/可伸缩
    Oracle行转列、列转行的Sql语句总结
    从零到百亿互联网金融架构发展史---架构变迁
    WebJars
    springcloud(五):熔断监控Hystrix Dashboard和Turbine
    SpringBoot编写自定义的starter 专题
  • 原文地址:https://www.cnblogs.com/cowshed/p/11397681.html
Copyright © 2020-2023  润新知