网络知识 娱乐 生产环境tomcat日志切割

生产环境tomcat日志切割

▶日志改进

(1)对已发生时间的存量日志压缩保留

(2)记录catalina.out、localhost_access_log日志

(3)catalina.out将按天分割,即每天生成一份当日日志,更名为catalina.out.yyyy-MM-dd.out。此日志保留15天,15天外的日志使用定时任务执行shell脚本方式压缩存档。

▶安装必要环境

yum -y install epel-releasenyum install -y cronolog gzip

▶修改配置文件

1.tomcat家目录下bin/catalina.sh

#touch "$CATALINA_OUT" //注释掉n if [ "$1" = "-security" ] ; thenn if [ $have_tty -eq 1 ]; thenn echo "Using Security Manager"n fin shiftn eval $_NOHUP ""$_RUNJAVA"" ""$LOGGING_CONFIG"" $LOGGING_MANAGER "$JAVA_OPTS" "$CATALINA_OPTS" n -D$ENDORSED_PROP=""$JAVA_ENDORSED_DIRS"" n -classpath ""$CLASSPATH"" n -Djava.security.manager n -Djava.security.policy==""$CATALINA_BASE/conf/catalina.policy"" n -Dcatalina.base=""$CATALINA_BASE"" n -Dcatalina.home=""$CATALINA_HOME"" n -Djava.io.tmpdir=""$CATALINA_TMPDIR"" n org.apache.catalina.startup.Bootstrap "$@" start 2>&1 n |/usr/sbin/cronolog "$CATALINA_BASE"/logs/catalina.out.%Y-%m-%d.out>> /dev/null &n elsen eval $_NOHUP ""$_RUNJAVA"" ""$LOGGING_CONFIG"" $LOGGING_MANAGER "$JAVA_OPTS" "$CATALINA_OPTS" n -D$ENDORSED_PROP=""$JAVA_ENDORSED_DIRS"" n -classpath ""$CLASSPATH"" n -Dcatalina.base=""$CATALINA_BASE"" n -Dcatalina.home=""$CATALINA_HOME"" n -Djava.io.tmpdir=""$CATALINA_TMPDIR"" n org.apache.catalina.startup.Bootstrap "$@" start 2>&1 n |/usr/sbin/cronolog "$CATALINA_BASE"/logs/catalina.out.%Y-%m-%d.out>> /dev/null &nn fin生产环境tomcat日志切割

2.修改{$tomcat_home}/conf/logging.properties(不再记录localhost、manager等日志)

找到以下内容,对其进行注释。

1catalina.org.apache.juli.AsyncFileHandler.level = FINEn1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logsn1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.n1catalina.org.apache.juli.AsyncFileHandler.encoding = UTF-8nn2localhost.org.apache.juli.AsyncFileHandler.level = FINEn2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logsn2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.n2localhost.org.apache.juli.AsyncFileHandler.encoding = UTF-8nn3manager.org.apache.juli.AsyncFileHandler.level = FINEn3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logsn3manager.org.apache.juli.AsyncFileHandler.prefix = manager.n3manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8nn4host-manager.org.apache.juli.AsyncFileHandler.level = FINEn4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logsn4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.n4host-manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8生产环境tomcat日志切割

▶日志归集备份脚本

#!/bin/bashn#此脚本应存放于${tomcat_home}目录,将eight_days_ago时间外的日志压缩到${tomcat_home}/logs/logbak中nnecho `date '+%Y-%m-%d %H:%M:%S'` "压缩备份开始" >> /www/tomcat/logs/logbak/compresslog.lognwork_path_real=$(cd $(dirname $0) && pwd )nwork_path=$work_path_real/logsnecho "脚本目录:"${work_path_real} nneight_days_ago=`date -d '16 days ago' +%Y-%m-%d`nnecho "工作目录:" $work_path, "备份时间:" $eight_days_ago nnif [ -d $work_path ]nthenn #压缩日志n cd $work_path ntif [ -f catalina.out.${eight_days_ago}.out ] && [ -f localhost_access_log.${eight_days_ago}.txt ]ntthenn ttar -czf logbak/catalina.out.${eight_days_ago}.out.tar.gz catalina.out.${eight_days_ago}.out localhost_access_log.${eight_days_ago}.txt nttrm -f catalina.out.${eight_days_ago}.out localhost_access_log.${eight_days_ago}.txt nttecho "catalina.out.${eight_days_ago}.out.tar.gz 备份完成..." >> /www/tomcat/logs/logbak/compresslog.logntelsenttecho "catalina.out.${eight_days_ago}.out.tar.gz 备份出错..." >> /www/tomcat/logs/logbak/compresslog.logntfi nelsen echo "tomcat logs directory is not exist" >> /www/tomcat/logs/logbak/compresslog.lognfinnecho `date "+%Y-%m-%d %H:%M:%S"` "备份结束" >> /www/tomcat/logs/logbak/compresslog.log

▶计划任务

30 23 * * * /bin/bash /www/tomcat/compresslog.sh >> /www/tomcat/logs/logbak/compresslog.log 2>&1