for some reason the old log files are not deleted. Example with apache
What the conf file says:
$ cat /etc/logrotate.d/apache2
/var/log/apache2/*.log {
weekly
missingok
rotate 2
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
/etc/init.d/apache2 reload > /dev/null
endscript
}
The (cropped) content of the log folder:
# ls /var/log/apache2/
access.log error.log.26.gz other_vhosts_access.log.20.gz access-ssl.log.14.gz
access.log.1 error.log.27.gz other_vhosts_access.log.21.gz access-ssl.log.15.gz
access.log.2.gz error.log.28.gz other_vhosts_access.log.22.gz access-ssl.log.16.gz
access.log.3.gz error.log.2.gz other_vhosts_access.log.23.gz access-ssl.log.17.gz
[...]
Actually there are lots of them:
# ls /var/log/apache2/ | wc -l
85
The logrotate command with --verbose gives me this:
# /usr/sbin/logrotate --verbose /etc/logrotate.conf
[...]
reading config file apache2
reading config info for /var/log/apache2/*.log
[...]
rotating pattern: /var/log/apache2/*.log weekly (2 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/apache2/access.log
log does not need rotating
considering log /var/log/apache2/error.log
log does not need rotating
considering log /var/log/apache2/other_vhosts_access.log
log does not need rotating
considering log /var/log/apache2/pbpdhg-ssl.log
log does not need rotating
not running postrotate script, since no logs were rotated
[...]
What is wrong here ? The logs are rotated but not removed? What am I missing?
your configuration says: rotate 2
that means log files are rotated 2 times before being removed, so logrotate only cares about 2 files.
my guess is that the configuration was changed at some point, because previously more log files were kept, maybe it was something like rotate 28. these older files you have to remove manually.
The logs with suffix .gz are not considered because you specified: /var/log/apache2/*.log
So 2 .log and all .gz files remain.
To change this put there
/var/log/apache2/**log* or some regular expression.