Tomcat 自动清理日志和缓存

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tomcat 自动清理日志和缓存相关的知识,希望对你有一定的参考价值。

参考技术A (1)在tomcat/conf/logging.properties文件下修改“maxDays”,系统默认是90天,对于高并发大访问量的服务,将保存的天数设置为最短。

(2)将level级别设置成WARNING就可以大量减少日志的输出,一般日志的级别有:
SEVERE (highest value) > WARNING > INFO > CONFIG > FINE > FINER > FINEST (lowest value),这里建议设置成“ WARNING”。

在tomcat/conf/server.xml文件中注释掉“localhost_access_log”日志生成

catalina.out与按天的catalina.xxxx.log重复,所以这里直接禁用。

在tomcat/bin/catalina.sh中找到下面位置

修改到dev/null,当路径不存在时,catalina.out日志也就被禁用

即停止tomcat、进入tomcat/work目录下​——>执行 rm -rf Catalina 来删除缓存文件——>启动tomcat = OK

Linux/Centos Tomcat 配置日志切分以及脚本自动清理

Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache,Sun和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和JSP规范总是能在Tomcat中得到体现,Tomcat 5支持最新的Servlet 2.4和JSP 2.0规范。因为Tomcat技术先进,性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。
Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可运用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat时,它实际上作为一个与Apache独立的进程单独运行的。
诀窍是,当配置正确时,Apache为HTML页面服务,而Tomcat实际上运行JSP页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的的Servlet容器是Tomcat的的默认模式。不过,Tomcat的处理静态HTML的能力不如Apache的服务器。目前Tomcat的最新版本为9.0。

在很多时候我们使用的Tomcat的时候,Tomcat的控制台日志会存放在Tomcat的安装目录下的日志文件夹下,日志文件名为catalina.out中,

这个日志文件如果不清理的话,会一直增长,在我以前的公司,由于疏忽,导致在生产上的这个日志增长到了好几十个GB,有了错误要看日志,根本打不开,当时使用的Linux的SED命令截取的日志,不过比较麻烦,后来经过看了一下网上的文章,发现这个日志是可以切分的,所以下面就给大家讲解一下如何切割日志,并且附带了脚本自动清理。

Tomcat的日志切分配置

上传的cronolog-1.6.2.tar.gz,到Linux的服务器的/software/目录下,文中涉及到的软件包,可以自己百度下载,或者加最下方微信,我免费发给你也可以

#cd /software/

#tar -zxvf cronolog-1.6.2.tar.gz

#cd cronolog-1.6.2

#./configure

#make

#make install

安装完之后呢我们使用命令查看命令路径

#which cronolog

如图所示:命令路径在:在/usr/local/sbin/cronolog

使用tomcat用户修改tomcat脚本如果你的tomat是用root用户启动,那么直接用root就好,但是生产环境起应用不建议用root用户,存在风险,只是建议。

修改tomcat/bin/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 2>&1 #这行是新添加的

  | / usr / local / sbin / cronolog“$ CATALINA_BASE”/logs/catalina.%Y-%m-%d.out >> / dev / null&#这行是新添加的

#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“$ CATALINA_BASE”/logs/catalina.%Y-%m-%d.out >> / dev / null&   #这行是新添加的

#org.apache.catalina.startup.Bootstrap“$ @”start #这行原来有,注释掉

#>>“$ CATALINA_OUT”2>&1“&”#这行原来有,注释掉

修改完之后重启把tomat,就会生成一个以当天日期为后缀的问件,如下图所示:

技术分享图片

日志切割完成后,我们就可以做日志清理了下面是日志清理脚本

#!/bin/bash

#clear tomcat logss

DOMAIN_HOME =“/ app / tomcat” #定义tomcat所在路径

LogFileName = catalina.date +%Y-%m-%d -d‘-5 days‘.out #处理多少天之前的tomcat日志可以自定义

cd $ {DOMAIN_HOME} /logs
if [-f $ {DOMAIN_HOME}/logs/catalina.date +%Y-%m-%d -d‘-1 days‘.out] #压缩多少天之前的日志
then
if [-f $ {DOMAIN_HOME}/logs/${LogFileName}]
the
/usr/bin/bzip2 ${DOMAIN_HOME}/logs/${LogFileName}
/usr/bin/find . -name“*”-type f -mtime +21 -exec rm -rf {} ; #删除21天前的文件
fi
fi
exit 0
脚本定义好以后,我们把脚本放在服务器目录上的/root/scripts/目录下,叫做clear_tomcat.sh

把脚本内容复制进clear_tomcat.sh文件里,使用命令:chmod 755 clear_tomcat.sh给执行权限

然后呢,我们定义一个计划任务

#crontab -e

加入下面一行

30 22 * / bin / sh /root/scripts/clear_tomcat.sh >> / dev / null&

然后保存退出就可以了,上面的意思是每天晚上十点半的时候执行脚本,请缺人的crond服务在运行中,脚本才可以正常运行

这样的话一天一个文件,如果发生错误看后台日志也好查找一些,而且不需要担心日志文件一直增长的问题。

如果对此文有什么问题的话,请加下面微信一起探讨

技术分享图片

以上是关于Tomcat 自动清理日志和缓存的主要内容,如果未能解决你的问题,请参考以下文章

linux服务器tomcat服务的catalina.out日志被清理了,如何查看上次清理的日期,有没有设定自动清理的服务

两个问题,第一:tomcat 清理日志 要重启tomcat服务吗? 第二:linux下如何手动清理日志?谢谢!

如何清理服务器里面的日志?

使用Shell脚本批量给tomcat日志打包压缩并清理

WebView自动缓存-清除缓存

如何设置firefox缓存自动清理