我们在 Apache Tomcat 6 容器中运行我们的 Web 应用程序。我们的代码使用 SLF4J 和 Logback 并且滚动/清除就好了。Tomcat 日志(catalina、stdout 等)只是在 Tomcat 服务重新启动时被删除。
问题是我们也在做一些 HTTP 日志记录。据任何人所知,它来自 Tomcat server.xml 文件中的这一行。
<Valve className="org.apache.catalina.valves.FastCommonAccessLogValve" directory="httplogs" pattern="combined" resolveHosts="false" prefix="" suffix=".log" rotatable="true" fileDateFormat="yyyy-MM-dd" />
这似乎旋转得很好,但从不清除。有没有办法让 Tomcat 自动清除它,还是我必须修改重启脚本来清理 httplogs 目录?
我建议使用 cron 作业 (UNIX) 或计划任务 (Windows) 清理日志文件。
首先确定您希望将日志保留多长时间,1 周、1 个月、3 个月?然后每天运行一个脚本,以删除旧日志。在 Unix 上删除超过 90 天的日志文件:
在 Windows 上可以使用类似的命令(
forfiles
仅在某些版本上可用)阅读这些命令的在线文档,并在将它们放入生产环境之前了解并测试它们正在做什么。
如果这些日志有一个共同的前缀,那么您可以将其添加到搜索掩码中,以便更具体地删除哪些文件。或者,我经常
gzip
使用旧文件而不是删除它们,以防它们以后证明有用。当您查看该类的源代码时,例如在 google 的代码搜索中,您可以看到根本没有清除。如果您身边有人可以编写一些 Java 代码,那么您可以轻松地扩展该类并添加所需的功能。
我很确定需要在 tomcat 服务重新启动时清除该日志以及您提到的其他日志。