我们在 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 目录?
答案1
我建议使用 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"
在将这些命令放入生产环境之前,请阅读这些命令的在线文档并了解和测试它们的作用。
如果这些日志有共同的前缀,那么您可以将其添加到搜索掩码中,以更具体了解删除了哪些文件。或者,我经常保存gzip
较旧的文件,而不是删除它们,以防它们以后有用。
答案2
例如,当你查看该类的源代码时这里是谷歌的代码搜索您可以看到,根本没有清除。如果您身边有人可以编写几行 Java 代码,则可以轻松扩展该类并添加所需的功能。
答案3
我很确定那个日志需要在 tomcat 服务重启时与您提到的其他日志一起清除。