首页 > 解决方案 > Tomcat访问日志旋转文件在几分钟内删除

问题描述

我正在使用该类生成 tomcat localhost 访问日志-

<Valve className="org.apache.catalina.valves.AccessLogValve" fileDateFormat="yyyy-MM-dd.HH:mm" renameOnRotate="true" prefix="localhost_access_log" suffix=".txt" maxDays="<%= @access_log_max_days %>"

由于我的节点没有足够的内存来存储所有访问日志,我想在 10 分钟左右后删除旋转的文件。我的问题是我们如何为maxDays构造提供十进制值(或 < 1 天)值,以便删除旋转文件的速度比每天一次更快?

任何帮助都感激不尽。提前致谢!

标签: tomcatloggingtomcat7access-log

解决方案


你不能, 的值maxDays是一个整数,值不大于0意味着没有旋转。所以你可以设置的最小值是1

无论如何,跨越几分钟的日志文件不允许您诊断几乎任何问题。与您可能部署的任何 Web 应用程序相比,日志占用的磁盘空间要少几个数量级,因此我认为每天轮换日志不会有问题。

编辑:设置maxDays="1"仍然会给您留下两个日志文件:当前一个和前一个。如果您希望只有当前的,您可以在 Tomcat 中禁用轮换并使用外部实用程序,如logrotate

<Valve className="org.apache.catalina.valves.AccessLogValve"  
       prefix="localhost_access_log"
       suffix=".txt"
       rotatable="false"
       checkExists="true" />

Logrotate可以根据文件大小进行旋转,因此它应该可以解决您的问题。


推荐阅读