cronolog切割tomcat日志以及日志导出方法
针对现有机器tomcat日志随着时间的延长,积累的日志达到几个G甚至更多(一台机器的全部的日志全部集中在一起),想导出某时间段的日志,通过导出脚本发现速度非常慢,而且服务器的压力会很大。解决办法:通过日志切割工具cronolog将日志按照以天为单位输出,保存成不同的文件。这样导出日志的时候只要指定日期,导出将会很快。
步骤:
1、cronolog的安装(安装方法很简单)
#tar -zxvf cronolog-1.6.2.tar.gz
#cd cronolog-1.6.2
#./configure
#make && make install
#which cronolog
/usr/local/sbin/cronolog
到此cronolog的安装已经完成,验证成功
2、配置tomcat切割对cronolog的应用
注:为了方便将多个tomcat的日志放在一起,方便管理(下面的路径只是参照)
#cd /data/install/tomcat7cluster/tomcats/tomcat_8181/
#cd bin/
#vim catalina.sh
touch "$CATALINA_OUT"
if [ "$1" = "-security" ] ; then
if [ $have_tty -eq 1 ]; then
echo "Using Security Manager"
fi
shift
eval "\"$_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
eval "\"$_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 /data/install/tomcat7cluster/logs/test81.%Y-%m-%d.log >> /dev/null&
#>> "$CATALINA_OUT" 2>&1 "&"
fi 上述23行修改的部分包括cronolog的路径,以及日志的存放路径,注:25行的代码注释掉。
完成配置之后,重启tomcat
#./startup.sh
查看日志存放的路径,是否生成当天的日志
#cd /data/install/tomcat7cluster/logs
#ls
test81.2016-05-20.log
到此日志分割完成
3、简单的日志查看和导出脚本
a.方便查看,直接执行脚本可以查看当前刷新的日志
#cd /data/install/tomcat7cluster
#vim tail-log.sh(脚本名)
#!/bin/sh
log_dir="/data/install/tomcat7cluster/logs"
log_file=`date '+test81.%Y-%m-%d.log'`
tail -f ${log_dir}/${log_file}
保存退出,可以试试效果哦。
b.日志导出脚本
脚本位置随意,导出的日志位置也是随意,这里日志在root下的logs中
#vim get-log.sh
#!/bin/bash
echo -e "Which day do you want to log,such as \033[31m2016-05-20\033[0m"
read -p "please enter: " a
echo
echo -e "Please enter start time,such as \033[31m16-01-27 14:51:27\033[0m"
read -p "Write down your answers: " b
echo -e "Please enter stop time,such as \033[31m16-01-27 14:51:27\033[0m"
read -p "Write down your answers: " c
echo
read -p "what name do you want to save: " d
tomcat_dir="/data/install/tomcat7cluster/"
log_dir="${tomcat_dir}/logs/test81.$a.log"
sednum1=`grep -n "$b" ${log_dir} | head -1 | awk -F ':' '{print $1}'`
sednum2=`grep -n "$c" ${log_dir} | tail -1 | awk -F ':' '{print $1}'`
sed -n "${sednum1},${sednum2}p" ${log_dir} > /root/logs/${d}
echo -e "\033[31m########check logs###########\033[0m"
cho -e "\033[34mhead\033[0m"
head /root/logs/${d}
sleep 5
echo -e "\033[34mtail\033[0m"
tail /root/logs/${d}
#bash get-log.sh
http://s2.运维网.com/wyfs02/M01/80/60/wKiom1c-xR-yKZ7rAAA6ivnNWPA729.jpg
注意:tomcat版本不同日志格式会不相同,根据实际情况做调整。
执行完成后,可以去存的目录下查看,到此。对tomcat日志的改造到此结束。
页:
[1]