由于某种原因,旧的日志文件没有被删除。以 apache 为例
conf文件的内容:
$ 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
}
日志文件夹的(裁剪后的)内容:
# 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
[...]
事实上有很多:
# ls /var/log/apache2/ | wc -l
85
带有 --verbose 的 logrotate 命令给出以下结果:
# /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
[...]
这里出了什么问题?日志已旋转但未移除?我遗漏了什么?
答案1
您的配置显示:旋转 2
这意味着日志文件在被删除之前会被轮换 2 次,因此 logrotate 只关心 2 个文件。
我的猜测是配置在某个时候发生了改变,因为以前保留了更多的日志文件,也许是像 rotate 28 这样的东西。您必须手动删除这些旧文件。
答案2
由于您指定了 /var/log/apache2/*.log,因此不考虑后缀为 .gz 的日志
因此保留 2.log 和所有.gz 文件。
要改变这一点,请放在那里
/var/log/apache2/**log* 或一些正则表达式。