我只想保留Tomcat Access Log Valve创建的最近n天的访问日志记录。
但是貌似没有配置属性可以定义日志文件保留多久?我猜测这是因为“访问日志阀门”只创建日志文件而不删除它们,对吗?
http://tomcat.apache.org/tomcat-6.0-doc/config/valve.html#Access%20Log%20Valve我只想保留Tomcat Access Log Valve创建的最近n天的访问日志记录。
但是貌似没有配置属性可以定义日志文件保留多久?我猜测这是因为“访问日志阀门”只创建日志文件而不删除它们,对吗?
http://tomcat.apache.org/tomcat-6.0-doc/config/valve.html#Access%20Log%20Valve默认情况下,rotatable
对于访问日志来说是开启的,因此每 24 小时会创建一个新文件。
Tomcat 本身不会对旧文件进行任何清理,一般在 Unix 系统上的原则是在系统上设置一个 cron 作业,将旧文件归档到备份目录和/或删除它们。
对于Tomcat 7,您可以配置 tomcat/conf/logging.properties
。例如:
1catalina.org.apache.juli.FileHandler.maxDays = 90
1
不是打字错误。
注意:这不会影响访问日志文件,这些文件由Access Log Valve处理,而不是主Tomcat(Apache Commons)日志处理。对于Windows系统,根据Erwan在Tomcat localhost_access_log文件清理中的回答,在给定的文件夹中并递归到所有子文件夹:
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
,请参考 使用批处理中的 FORFILES 删除一周之前的 tmp 和 bak 文件:
for %%t in (.txt, .log) do forfiles /p "C:\path\to\httplogs\" /s /m *%%t /d -10 /c "cmd /c del @PATH"
#cat /etc/logrotate.d/tomcat
/var/log/tomcat/*.log {
su tomcat tomcat
copytruncate
daily
rotate 6
compress
missingok
}
su tomcat tomcat" - 我添加了这个命令以避免日志轮换出现权限错误。
server.tomcat.accesslog.max-days=3
删除旧文件,例如3天后。server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.directory=C:/path/to/dir
server.tomcat.accesslog.max-days=3
References:
对于Tomcat 9,它是访问日志配置的一部分。请参见http://tomcat.apache.org/tomcat-9.0-doc/config/valve.html#Access_Logging:
maxDays
旋转的访问日志将保留多少天后被删除的最大天数。如果未指定,默认值为-1,表示永不删除旧文件。
locate RELEASE-NOTES | egrep 'tomcat|apache' | xargs grep "Apache Tomcat Version"
maxDays
参数。https://tomcat.apache.org/tomcat-7.0-doc/logging.html - Valerio BozzmaxDays
不能在那里使用,因为它不使用 log4j 进行日志记录。 - gargii