Reputation: 2083
I only would like to keep the Access Logs of the last n days created by Tomcat Access Log Valve. http://tomcat.apache.org/tomcat-6.0-doc/config/valve.html#Access%20Log%20Valve
But there seems to be no configuration-Attribute to define how long to keep the log-files? I guess this is because "Access Log Valve" only creates log files and doesn't delete them, is that correct?
Upvotes: 24
Views: 56133
Reputation: 1890
If you use tomcat within spring boot you can use server.tomcat.accesslog.max-days=3
to delete old files after e. g. 3 days.
A minimal working configuration with spring boot to log the accesslog would be:
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.directory=C:/path/to/dir
server.tomcat.accesslog.max-days=3
References:
Upvotes: 1
Reputation: 1668
For Tomcat 7 you can config tomcat/conf/logging.properties
. Example:
1catalina.org.apache.juli.FileHandler.maxDays = 90
Note: that 1
is not a typo.
https://tomcat.apache.org/tomcat-7.0-doc/logging.html
Note: this does not affect access log files, which are handled by the Access Log Valve, not by the main Tomcat (Apache Commons) logging.
Upvotes: 5
Reputation: 859
For tomcat 9 its part of access log configuration. See http://tomcat.apache.org/tomcat-9.0-doc/config/valve.html#Access_Logging:
maxDays
The maximum number of days rotated access logs will be retained for before being deleted. If not specified, the default value of -1 will be used which means never delete old files.
Upvotes: 2
Reputation: 1253
run in terminal:
locate RELEASE-NOTES | egrep 'tomcat|apache' | xargs grep "Apache Tomcat Version"
Upvotes: 0
Reputation: 71
Incase of Apache Tomcat 7.0. You can use maxDays parameter to delete old log files. https://tomcat.apache.org/tomcat-7.0-doc/config/valve.html
Upvotes: 2
Reputation: 23529
For Windows, based on Erwan's answer in Tomcat localhost_access_log files cleanup, for the given folder and recursing into all subfolders:
forfiles /p "C:\path\to\httplogs\" /s /m *.log /d -10 /c "cmd /c del @PATH"
To test, just use:
forfiles /p "C:\path\to\httplogs\" /s /m *.log /d -10 /c "cmd /c dir /b @PATH"
And when having multiple suffixes in the log folder, like both .txt
and .log
, see 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"
Upvotes: 4
Reputation: 788
You can try to create logrotate config:
#cat /etc/logrotate.d/tomcat
/var/log/tomcat/*.log {
su tomcat tomcat
copytruncate
daily
rotate 6
compress
missingok
}
"su tomcat tomcat" - i added for avoiding logrotate error on wrong permissions
Upvotes: 3
Reputation: 2352
By default rotatable
is true for Access Log, so you will be having a new file created every 24 hours.
Tomcat itself does not do any housekeeping on the old files, the general principle on a Unix system is to have a cron job set up on the system to archive older files into a back up directory and/or delete them.
Upvotes: 17