【发布时间】:2011-02-15 20:28:35
【问题描述】:
我只想保留 Tomcat 访问日志阀创建的最近 n 天的访问日志。 http://tomcat.apache.org/tomcat-6.0-doc/config/valve.html#Access%20Log%20Valve
但似乎没有配置属性来定义保留日志文件的时间?我猜这是因为“访问日志阀”只创建日志文件而不删除它们,对吗?
【问题讨论】:
我只想保留 Tomcat 访问日志阀创建的最近 n 天的访问日志。 http://tomcat.apache.org/tomcat-6.0-doc/config/valve.html#Access%20Log%20Valve
但似乎没有配置属性来定义保留日志文件的时间?我猜这是因为“访问日志阀”只创建日志文件而不删除它们,对吗?
【问题讨论】:
默认情况下,rotatable 对访问日志为 true,因此您将每 24 小时创建一个新文件。
Tomcat 本身不会对旧文件做任何内务处理,Unix 系统的一般原则是在系统上设置一个 cron 作业,将旧文件归档到备份目录和/或删除它们。
【讨论】:
maxDays 参数。 tomcat.apache.org/tomcat-7.0-doc/logging.html
maxDays 不能在那里使用,因为它不使用 log4j 进行日志记录。
您可以尝试创建 logrotate 配置:
#cat /etc/logrotate.d/tomcat
/var/log/tomcat/*.log {
su tomcat tomcat
copytruncate
daily
rotate 6
compress
missingok
}
“su tomcat tomcat” - 我添加是为了避免错误权限导致 logrotate 错误
【讨论】:
对于 Windows,基于 Erwan 在 Tomcat localhost_access_log files cleanup 中的回答,对于给定文件夹并递归到所有子文件夹:
forfiles /p "C:\path\to\httplogs\" /s /m *.log /d -10 /c "cmd /c del @PATH"
要测试,只需使用:
forfiles /p "C:\path\to\httplogs\" /s /m *.log /d -10 /c "cmd /c dir /b @PATH"
如果日志文件夹中有多个后缀,例如.txt 和.log,请参阅using FORFILES in batch to delete tmp and bak files older than a week:
for %%t in (.txt, .log) do forfiles /p "C:\path\to\httplogs\" /s /m *%%t /d -10 /c "cmd /c del @PATH"
【讨论】:
Apache Tomcat 7.0 的情况。您可以使用 maxDays 参数来删除旧的日志文件。 https://tomcat.apache.org/tomcat-7.0-doc/config/valve.html
【讨论】:
对于 Tomcat 7,您可以配置 tomcat/conf/logging.properties。示例:
1catalina.org.apache.juli.FileHandler.maxDays = 90
注意:1 不是错字。
https://tomcat.apache.org/tomcat-7.0-doc/logging.html
注意:这不会影响访问日志文件,这些文件由访问日志阀处理,而不是由主 Tomcat (Apache Commons) 日志记录。
【讨论】:
在终端运行:
locate RELEASE-NOTES | egrep 'tomcat|apache' | xargs grep "Apache Tomcat Version"
【讨论】:
对于 tomcat 9,它是访问日志配置的一部分。见http://tomcat.apache.org/tomcat-9.0-doc/config/valve.html#Access_Logging:
最大天数
轮换访问日志的最大天数将在被删除之前保留。如果不指定,将使用默认值-1,这意味着永远不会删除旧文件。
【讨论】:
如果你在spring boot中使用tomcat,你可以使用server.tomcat.accesslog.max-days=3删除e之后的旧文件。 G。 3 天。
使用 Spring Boot 记录访问日志的最小工作配置是:
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.directory=C:/path/to/dir
server.tomcat.accesslog.max-days=3
参考资料:
【讨论】: