Logrotate 不删除旧日志

din*_*law 5 logrotate

我正在使用以下设置来归档和删除日志:

/path/to/logs/*.log {
    daily
    missingok
    compress
    rotate 4
    nodateext
    nocreate
    maxage 14
Run Code Online (Sandbox Code Playgroud)

}

我的日志位置的日志如下所示:

-rwxrwxrwx 1 nobody nobody 21635 Sep 26 13:09 audit-2016.09.26.log
Run Code Online (Sandbox Code Playgroud)

然后旋转和压缩,看起来像这样:

-rwxrwxrwx 1 nobody  nobody    180485 Sep 10 03:41 audit-2016.09.26.log.1.gz
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,每晚归档日志后,日志在 14 天后不会被删除(正如 maxage 指令应该做的那样)。

有谁知道为什么会发生这种情况,或者我应该在我的 logrotate 配置中更改什么?

谢谢!

rud*_*ier 12

从 logrotate 手册页:

最大数量

删除超过几天的轮换日志。仅在要轮换日志文件时才检查年龄。

audit-2016.09.26.log只创建了一次,以后再也没有创建过。所以它永远不会再次旋转。

实际上您的审计日志文件已经轮换了。看起来您只想压缩它们并删除旧文件。我不知道这对 logrotate 是否可行。您可以在原始规则中添加 postrotate 脚本,例如:

       postrotate
           find /path/to/logs -name "*.log.1.gz" -mtime +14 -delete
       endscript
Run Code Online (Sandbox Code Playgroud)