logrotate codeigniter 日志,仅保留 7 天

logrotate codeigniter 日志,仅保留 7 天

我正在尝试轮换 CodeIgniter 生成的日志,它们以这种方式命名(每天一个)

log-2020-05-05.php
log-2020-05-06.php
log-2020-05-07.php

这个想法是将它打包到 kalkun 的 debian 包中。我发现这个建议但它不能满足我的需求

所以我期望的是:

  • 轮换每个日志文件(无论如何只为当天生成)
  • 最多保留 7 天的日志,例如,我想保留 5 月 7 日到 5 月 1 日的日志,并删除所有之前的日志

结果最多看起来像这样(所有以前的文件都将被删除)

log-2020-05-01.php.1.gz
log-2020-05-02.php.1.gz
log-2020-05-03.php.1.gz
log-2020-05-04.php.1.gz
log-2020-05-05.php.1.gz
log-2020-05-06.php.1.gz
log-2020-05-07.php

这实际上只通过 logrotate 就能实现吗?

问题是,如果我使用“rotate 7”在“log-*.php”上轮换,由于每个文件仅在特定日期生成,因此它实际上永远不会轮换第二次,除非我使用“create”,但这会创建空文件,从而污染日志目录。我还可以添加“maxage 7”(除了“create”之外,但这仍然会用空文件污染日志目录)

我试过这种方法

/var/www/kalkun/application/logs/log-*.php {
    daily
    missingok
    rotate 7
    compress
    #create 644 www-data www-data
    nocreate
    sharedscripts

    postrotate
        if invoke-rc.d apache2 status > /dev/null 2>&1; then \
            invoke-rc.d apache2 reload > /dev/null 2>&1; \
        fi;
    endscript
    prerotate
        if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
                run-parts /etc/logrotate.d/httpd-prerotate; \
        fi; \
    endscript
}

相关内容