Tomcat 6 HTTP日志滚动和清除

我们在Apache Tomcat 6容器中运行我们的Web应用程序。 我们的代码使用SLF4J和Logback和卷/清除就好了。 Tomcat日志(catalina,stdout等)只是在Tomcat服务重启时被删除。

问题是我们也在做一些HTTPlogging。 至于任何人都可以告诉它来自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目录?

我build议使用cron作业(UNIX)或计划任务(Windows)清理日志文件。

首先确定你想保留多久,1周,1个月,3个月的日志? 然后每天运行一个脚本,以删除旧的日志。 在Unix上删除超过90天的日志文件:

 find /path/to/httplogs/ -name "*.log" -type f -mtime +90 -exec rm -f {} \; 

在Windows上,可以使用类似的命令( forfiles仅在某些版本上可用)

 forfiles /p "C:\path\to\httplogs\" /s /m *.log /d -90 /c "cmd /c del @PATH" 

阅读这些命令的在线文档,了解并testing将它们放入生产环境之前所做的工作。

如果这些日志有一个共同的前缀,那么您可以将其添加到search掩码,以更具体地删除文件。 或者,我经常gzip旧文件,而不是删除它们,以防事后certificate有用。

当你看看这个类的源代码时,例如在谷歌代码search中,你可以看到,根本没有清除。 如果你周围有人可以编写一些Java代码,那么可以很容易地扩展这个类并添加所需的函数。

我敢肯定,这需要清除tomcat服务重新启动以及您提到的其他日志。