Logrotate不会删除旧日志


14

由于某些原因,不会删除旧的日志文件。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
[...]

这是怎么了?日志已轮换但未删除?我想念什么?

Answers:


17

您的配置显示:旋转2

这意味着在删除日志文件之前将其旋转2次,因此logrotate只关心2个文件。

我的猜测是在某个时候更改了配置,因为以前保留了更多的日志文件,也许就像旋转28。这些较旧的文件必须手动删除。


我无法证明答案,所以我认为这是正确的。但是我不明白为什么access.log.3.gz仍然存在。
SamK

2
因为Rotate 2仅处理2个文件,即.1.gz和.2.gz,而忽略其他文件。
johnshen64

1
我将“旋转365”更改为“旋转90”,access.log.90.gz是到目前为止的最新更改。该access.log.91.gz已被删除(如日志轮播只保留90),而不是> 91所以johnshen64是正确的,你必须删除任何东西> 2
伊凡

这是有关如何自动处理此问题的提示,即通过许多服务器上的配置管理:serverfault.com/a/636883/9082
Martijn Heemels,2015年

-3

由于指定了以下内容,因此不考虑后缀为.gz的日志:/var/log/apache2/*.log

所以2 .log和所有.gz文件都保留。

要改变这个地方

/ var / log / apache2 / ** log *或某些正则表达式。


抱歉,在登录前仅显示一个星号
Neg88 '16

2
对于星号问题,您可以编辑帖子。一般来说,您为什么认为接受的答案是错误的?logrotate需要基本名称文件,并根据需要处理.gz附加内容。
Law29 2016年

这个答案实际上是有害的,因为有可能导致文件一遍又一遍地轮换,至少使用某些logrotate版本轮换一次。它将首先压缩文件,然后匹配压缩文件并继续旋转它们。
Richlv
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.