tomcat日志文件过大,使用cronolog工具切割日志

    在我们将项目部署到Linux中的tomcat下时,运行很久后会在tomcat/logs/catalina.out文件会越来越大,会降低tomcat的性能,因此我们需要使用一个工具来将这个文件根据日期来分割,将每天生成的日志存放在一个独立的文件中,下面介绍一个cronolog工具来实现。

首先下载cronolog-1.6.2.tar.gz   下载地址:https://download.csdn.net/download/h2520ny/10351919

第一步:输入tar xf cronolog-1.6.2.tar.gz解压

第二步:输入cd cronolog-1.6.2,进入该目录

第三步编译安装:输入./configure(如果输入后显示有报错,如下报错您需要输入yum install gcc gcc-c++ gcc-g77,然后再输入./configure,会出现如下图)

然后输入make

然后输入make install

第四步修改tomcat的启动文件(tomcat/bin/catalina.sh)

扫描二维码关注公众号,回复: 1929717 查看本文章

else

    eval $_NOHUP "\"$_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 \

      >> "$CATALINA_OUT" 2>&1 "&"

大致在415(这只是我的catalina.sh中的位置,不同版本可以不一样),将其修改为:

 

else

    eval $_NOHUP "\"$_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 \

  |/usr/local/sbin/cronolog "$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out >> /dev/null 2>&1 &

以后查看实时日志需使用tail -f catalina.2018-04-16.out 命令查看(这是在2018-04-16查看时)


下面进行在Linux中写定时删除tomcat日志目录下30天前的后缀为.log的文件,分以下三步
第一步:创建shell脚本(也可以理解为在Windows下创建bat脚本)
1.在Linux下某目录下创建一个.sh脚本文件,我这里是在/home/xhj/目录下创建了一个auto-del-30-days-ago-log.sh文件。
2.然后给这个文件执行权限,进入/home/xhj/目录,输入chmod +x auto-del-30-days-ago-log.sh赋予执行权限。
第二步:编辑shell脚本
1.输入cd /home/xhj/进入/home/xhj/目录(如果已经在此目录测不需要此步骤)
2.输入vi auto-del-30-days-ago-log.sh编辑该文件
3.在文件中写find /home/xhj/java/apache-tomcat-7.0.73/logs/ -mtime +30 -name "*.log" -exec rm -rf {} \;写完后保存退出
(/home/xhj/java/apache-tomcat-7.0.73/logs/为存放日志文件的目录,+30是表示删除30天前的数据,"*.log"表示删除以.log为后缀的数据,整条语句意思是删除/home/xhj/java/apache-tomcat-7.0.73/logs/目录下30天前的后缀为.log的文件)
第三步:将auto-del-30-days-ago-log.sh执行脚本加入到系统计划任务,到点自动执行
1.在随便哪个目录下输入crontab -e
2.然后添加一行代码10 0 * * * /home/xhj/auto-del-30-days-ago-log.sh >/dev/null 2>&1(这里的设置是每天凌晨0点10分执行auto-del-30-days-ago-log.sh文件进行数据清理任务了。)


猜你喜欢

转载自blog.csdn.net/h2520ny/article/details/79957513