我正在尝试轮换 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
}