Linux下用cronolog切割Tomcat日志并删除指定天数前的日志记录推

使用cronolog工具切分Tomcat的catalina.out日志文件

普通用户下载、安装cronolog

[tomcat@localhost~]$tar-xfcronolog-1.6.2.tar.gz[tomcat@localhost~]$cdcronolog-1.6.2/[tomcat@localhostcronolog-1.6.2]$./configure--prefix=/home/tomcat/cronologmakeinstall

root用户下下载、安装cronolog

[root@localhost~]#rpm-qa|grepcronolog[root@localhost~]#tarzxvfcronolog-1.6.2.tar.gz[root@localhost~]#cdcronolog-1.6.2[root@localhostcronolog-1.6.2]#./configure[root@localhostcronolog-1.6.2]#make makeinstall[root@localhostcronolog-1.6.2]#whichcronolog/usr/local/sbin/cronolog

在普通用户的家目录下编辑.bash_profile文件里添加“$HOME/cronolog/sbin”添加cronolog的安装路径

[tomcat@localhost ~]$ vi .bash_profile

#.bash_profile#Getthealiasesandfunctionsif[-f~/.bashrc];then.~/.bashrc#UserspecificenvironmentandstartupprogramsPATH=$PATH:$HOME/bin:$HOME/cronolog/sbinexportPATH

用which cronolog可以查到安装的路径,这个路径待会在修改catalina.sh时会用到。

修改catalina.sh 文件

将186行【CATALINA_OUT=”$CATALINA_BASE”/logs/catalina.out】修改成187行【CATALINA_OUT=”$CATALINA_BASE”/logs/opres.%Y-%m-%d.out】内容,日志名可以自行定义;

注释掉370行【touch “$CATALINA_OUT”】;

383、384行【

org.apache.catalina.startup.Bootstrap “$@” start \

“$CATALINA_OUT” 2 1 ” “】替换成385、386行【

org.apache.catalina.startup.Bootstrap “$@” start 2 1 \

| /home/tomcat/cronolog/sbin/cronolog “$CATALINA_OUT” /dev/null 2 1

】;

396、397行【

org.apache.catalina.startup.Bootstrap “$@” start \

“$CATALINA_OUT” 2 1 ” “

】替换成394、395行【

org.apache.catalina.startup.Bootstrap “$@” start 2 1 \

| /home/tomcat/cronolog/sbin/cronolog “$CATALINA_OUT” /dev/null 2 1

】;最后一步(394、395)要注意如果原本的命令只是注释掉,替换的内容一定要在原本内容的上面,不然无法正常启动,前面的替换(383、384)位置没有关系的

97JAVA_OPTS="-Xms512m-Xmx1024m-Xss1024K-XX:PermSize=256m-XX:MaxPermSize=512m"9899#OSspecificsupport.$var_must_besettoeithertrueorfalse.185if[-z"$CATALINA_OUT"];then186#CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out187CATALINA_OUT="$CATALINA_BASE"/logs/opres.%Y-%m-%d.out370#touch"$CATALINA_OUT"371if["$1"="-security"];then372if[$have_tty-eq1];then373echo"UsingSecurityManager"374fi375shift376eval"\"$_RUNJAVA\"""\"$LOGGING_CONFIG\""$LOGGING_MANAGER$JAVA_OPTS$CATALINA_OPTS\377-Djava.endorsed.dirs="\"$JAVA_ENDORSED_DIRS\""-classpath"\"$CLASSPATH\""\378-Djava.security.manager\379-Djava.security.policy=="\"$CATALINA_BASE/conf/catalina.policy\""\380-Dcatalina.base="\"$CATALINA_BASE\""\381-Dcatalina.home="\"$CATALINA_HOME\""\382-Djava.io.tmpdir="\"$CATALINA_TMPDIR\""\383#org.apache.catalina.startup.Bootstrap"$@"start\384# "$CATALINA_OUT"2 1" "385org.apache.catalina.startup.Bootstrap"$@"start2 1\386|/home/tomcat/cronolog/sbin/cronolog"$CATALINA_OUT" /dev/null2 1 387388else389eval"\"$_RUNJAVA\"""\"$LOGGING_CONFIG\""$LOGGING_MANAGER$JAVA_OPTS$CATALINA_OPTS\390-Djava.endorsed.dirs="\"$JAVA_ENDORSED_DIRS\""-classpath"\"$CLASSPATH\""\391-Dcatalina.base="\"$CATALINA_BASE\""\392-Dcatalina.home="\"$CATALINA_HOME\""\393-Djava.io.tmpdir="\"$CATALINA_TMPDIR\""\394org.apache.catalina.startup.Bootstrap"$@"start2 1\395|/home/tomcat/cronolog/sbin/cronolog"$CATALINA_OUT" /dev/null2 1 396#org.apache.catalina.startup.Bootstrap"$@"start\397# "$CATALINA_OUT"2 1" "398fi

可以通过./catalina.sh start 来查看配置文件是否正确;这样在/usr/local/tomcat/logs每天会自动生成opres.%Y-%m-%d.out文件,下面我们要做的是定期清理这些过期的文件,我们可以通过crontab来实现

[tomcat@localhost~]$crontab-e303***/bin/find/home/tomcat/openapi/logs/-mtime+7-typef-name"opres*.*.out"-exec/bin/rm-f{}\;[tomcat@localhost~]$crontab-l303***/bin/find/home/tomcat/openapi/logs/-mtime+7-typef-name"opres*.*.out"-exec/bin/rm-f{}\;

每天凌晨3点半执行清除7天之前过期日志

或者

#每天凌晨3点执行删除前7天的所有tomcat生成的日志文件(切割的日志名字与原告先的一样只是加了日期catalina.%Y-%m-%d.out)

03***/bin/find/opt/tomcat-mtime+7-typef-name"catalina.*.out"-exec/bin/rm-rf{}\;03***/bin/find/opt/tomcat-mtime+7-typef-name"catalina.*.log"-exec/bin/rm-rf{}\;03***/bin/find/opt/tomcat-mtime+7-typef-name"host-manager.*.log"-exec/bin/rm-rf{}\;03***/bin/find/opt/tomcat-mtime+7-typef-name"localhost.*.log"-exec/bin/rm-rf{}\;03***/bin/find/opt/tomcat-mtime+7-typef-name"manager.*.log"-exec/bin/rm-rf{}\;上面有些觉得写的太多,可以简为写成如下:03***/bin/find/opt/tomcat/logs/*-mtime+7-exec/bin/rm-rf{}\;

命令说明:

/var/www/是查找文件的路径。-type f是指定文件类型为普通文件。-mtime +30是指修改时间距离现在30天的文件。-exec rm -f指执行删除匹配出来的文件并且不提示,有的系统需要带单引号,有的不需要。将以上命令,添加到crontab中,即可实现定期删除了。比如,每天的1点30分钟实现删除,可以这样:

#每天凌晨1点执行删除前30天的日志文件

01***find/aa/tomcat6.0/logs/*-mtime+30-execrm-f{}\;

要知道,当你一直在担心错过了什么的时候,

Linux下用cronolog切割Tomcat日志并删除指定天数前的日志记录推

相关文章:

你感兴趣的文章:

标签云: