前言

 测试人员反馈tomcat目录下的日志占用空间很大,需要自动清理。接到这个反馈时,想象着应该是一个很简单的功能,tomcat应该已经实现了日志的自动清理功能。于是乎,我先到网上查询了如何自动清除tomcat日志,结果发现搜索结果最靠谱的也就是自己写个定时清理脚本,放入系统启动计划中。卧槽,不是吧,这功能还得自己单独处理!不应该吧!为了解答自己的疑惑,我毅然访问了tomcat官网,凭借着4级英语的水准,畅游其中,找寻答案。

 果不其然,解决方案被我找到了。那就是设置日志处理handler的maxDays属性!该方案出现在tomcat-8.5文档介绍中,接下来就开始探索之旅。

 

一、版本的问题

    1.1、一开始以为Tomcat8.5.×的版本都可以,庆幸自己使用的版本是Tomcat8.5.6。于是打开conf / logging.properties,为handler添加了maxDays属性。但是一测试发现不行,没办法开始查看源码。

  

   1.2、经查询org.apache.juli.AsyncFileHandler类存在于tomcat根目录下的 bin / tomcat-juli.jar 包中,可以通过maven进行jar包下载,分析其源码。我跳跃试的尝试了8.5.6, 8.5.15, 8.5.20,这几个版本都没有发现handler的maxDays属性。最终尝试到8.5.24版本时,发现限制日志保存天数的maxDays属性。

  

   1.3、当发现8.5.24版本的tomcat-juli jar包可用后,立马替换到了自己的tomcat中(去掉版本号),重启服务。发现服务启动失败,jar包与当前版本的tomcat不匹配。于是升级tomcat,在官网上下载了tomcat 32-bit/64-bit Windows Service Installer,重新注册服务后,发现自动清理功能生效。

  1.4、需要注意的是,这个清理功能按照配置只对catalina,localhost,manager,host-manager 这4类日志文件有效。对于stderr,stdout这两类日志可以通过Tomcat服务管理工具进行设置,过程很简单,将Logging页签下的 Redirect Stdout和Redirect Stderror两项清空后,日志就不再输出了。

  

   1.5、此外还有localhost_access_log 这一类日志,如果也不需要的话,可以在conf / server.xml 文件中,将Host/Value 下面的日志输出注释掉。如下图。

  

二、日志自动清理(maxDays)实现原理解析

  2.1、AsyncFileHandler为指定的一类日志提供处理方案,继承自FileHandler类。FileHandler类中声明有一个maxDays属性,即文件保留天数。默认值是-1,即不执行任何清理操作。

  

    

  2.2、FileHandler内部启动了一个过期日志文件清理线程,根据设置的maxDays值进行清理。线程启动源码截图如下,具体线程的实现有兴趣的朋友可以自行看看源码。

       

   

至此关于tomcat自行清理过期的日志文件功能就简单介绍完了,如果没有用过,可以尝试一下!tomcat版本建议使用8.5.24以上,功能上差强人意,又比自己去写清理脚本的方案好些。鉴于网上关于这块功能的文章较少,希望这篇博文能对你有所帮助。

Tomcat8.5.24日志自动清理(maxDays)功能探究的更多相关文章

  1. IIS日志自动清理

    IIS在运行的过程中日志会不停地增长,若iis的网站被频繁的调用或不当的调用,则会产生很多日志.我在系统运维的时候曾出现过20G的系统盘,由于合作商开发的程序有问题,每几百微秒调用一次web服务,短期 ...

  2. Linux**系统实现log日志自动清理

    Linux系统实现log日志自动清理 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: ...

  3. log4j实现日志自动清理功能

    log4j不支持自动清理功能,但是log4j2版本支持,log4j2是log4j的升级版,比logback先进. log4j升级为log4j2(不需要改动代码)https://blog.csdn.ne ...

  4. Hadoop、Strom集群实现日志自动清理

    Hadoop+Storm集群,运行一段时间ZooKeeper等关键进程自动停止运行,经检测是系统磁盘不足 系统磁盘100%: 查找大文件后发现,空间均被ZooKeeper产生的log占用 find / ...

  5. Linux中添加计划任务与Elasticsearch日志自动清理

    一.简述 当日志发送到ELK之后,Elasticsearch随着日志的增加,占用磁盘量会越来越大.这时候,需要我们写角本定期DELETE日志.角本写法,也很简单,只是发送HTTP的DELETE方式到: ...

  6. python 日志logging设置按天进行保存,保存近7天,过期日志自动清理

    参考文章(写的很详细):https://www.cnblogs.com/xujunkai/p/12364619.html 前言: 跑接口自动化或者其他程序运行时,如果只能保存一份log文件,可能会存在 ...

  7. python日志按天分割,保存近一个月日志,日志自动清理

    python日志按天分割,保存近一个月日志 import os import logging import re from logging.handlers import TimedRotatingF ...

  8. 如何自动清理 KingbaseES SYS_LOG

    KingbaseES 初始化完成后,默认不会对 sys_log进行清理.如果需要对sys_log进行自动清理,需要设置相关参数. 与日志自动清理有关的参数(默认值)如下: log_filename | ...

  9. zookeeper3.4.6配置实现自动清理日志

    在使用zookeeper过程中,我们知道,会有dataDir和dataLogDir两个目录,分别用于snapshot和事务日志的输出(默认情况下只有dataDir目录,snapshot和事务日志都保存 ...

随机推荐

  1. hive(II)--sql考查的高频问题

    在了解别人hive能力水平的时候,不管是别人问我还是我了解别人,有一些都是必然会问的东西.问的问题也大都大同小异.这里总结一下我遇到的那些hive方面面试可能涉及的问题 1.行转列(列转行) 当我们建 ...

  2. List源码学习之ArrayList

    ArrayList 内部结构为一个可重复的对象数组(可存空对象). 内部有以下几个参数: ;/** * 用于空实例的共享空数组实例 */private static final Object[] EM ...

  3. eclipse 用maven创建web项目

    Eclipse 用maven构建web项目 (2013-01-27 11:05:31) 转载▼ 标签: it eclipse maven spring web 杂谈   一.背景介绍 对于初学者,用m ...

  4. System.Web.Mvc 3.0.0.1 和 3.0.0.0 有什么区别?被 Microsoft ASP.NET MVC 的一次安全更新害惨了!!!

    今天更新站点时,发现网站竟然报错 ... uses 'System.Web.Mvc, Version=3.0.0.1, Culture=neutral, PublicKeyToken=31bf3856 ...

  5. Spring MVC 配置文件dispatcher-servlet.xml 文件详解(转自 学无止境-yj)

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  6. Ubuntu 安装 Nginx 实现反向代理

    安装Nginx依赖库(ubuntu平台) 最近域名通过了备案, 想着应用总不能带着端口号访问吧, 于是在网上踩了很多坑, 终于找到了一步直达的方法,起码这一次很顺利的实现了 安装gcc g++的依赖库 ...

  7. 布衣之路(一):VMware虚拟机+CentOS系统安装

    前言:布衣博主乃苦逼的Java程序猿一枚,虽然工作中不会涉及系统运维,但是开发的项目总还是要部署到服务器做一些负载均衡.系统兼容性测试.系统集成等等骚操作,而这些测试性的操作不可能直接SSH远程运维的 ...

  8. 【转】高精度GPS测量中框架基准的统一

    一.地面基准点的坐标基准转换 一般情况下,我们可以从IERS或IGS等机构获取最新的站坐标和速度场,这些站坐标和速度场是在某一特定基准框架和历元下的坐标值,若要提供高精度GPS网的分析使用,还需要作框 ...

  9. mysql主从延迟高的原因

    1.1.1故障1:从库数据与主库冲突 1 2 3 4 5 6 show slave status; 报错:且show slave status\G Slave_I/O_Running:Yes Slav ...

  10. 我的第一个Android开源库——CirclePointMove中文文档(可随Viewpager移动的指示器)

    Github网址:https://github.com/Stars-One/CirclePointMove 这个开源库一个封装好的Viewpager指示器,之前在学习的时候,想要实现一个小圆点跟随Vi ...