CUPS logrotate is configured in /etc/logrotate.d/cups-daemon. By default, logrotate is performed daily, and after the rotate CUPS is restarted.
/var/log/cups/*log {
daily
missingok
rotate 7
sharedscripts
postrotate
invoke-rc.d --quiet cups restart > /dev/null
endscript
compress
delaycompress
notifempty
create
}
By default, the installation of logrotate creates a crontab file inside /etc/cron.daily named logrotate. As it is the case with the other crontab files inside this directory, it will be executed daily starting at 6:25 am if anacron is not installed. Otherwise, the execution will begin around 7:35 am. To verify, watch for the line containing cron.daily in either /etc/crontab or /etc/anacrontab.
How does this happen?
Taking Ubuntu 16.04 defaults as example:
... 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) ...
If anacron exists,test -x /usr/sbin/anacronwill return true, and prevent the second half of that line from running: in that case/etc/cron.d/anacronmust be edited to change daily scheduled time, since that's the config that will kick off anacron itself.
30 7 * * * root test -x /etc/init.d/anacron && /usr/sbin/invoke-rc.d anacron start >/dev/null
anacron is started at7:30 am, but hang on … the actual anacron behavior is configured in/etc/anacrontab
... # These replace cron's entries # 1 = daily, 5 = number of minutes anacron waits, before executing the job. 1 5 cron.daily run-parts --report /etc/cron.daily ...
So, effectively, CUPS daily logrotate is kicked off at7:30 amby anacron, but the actual rotate is executed after a 5 minutes wait, at7:35 am1).
sudo vi /etc/cron.d/anacron
… and change line like this:
30 6 * * * root test -x /etc/init.d/anacron && /usr/sbin/invoke-rc.d anacron start
sudo vi /etc/logrotate.d/cups-daemon # change daily to weekly, monthly, yearly