我正在尝试通过将 /etc/logrotate.d/apache2 中的 'rotate 52' 减少为 'rotate 8' 来减少为 Apache 保留的日志文件的数量。通过每周轮换,这应该保留 2 个月的日志而不是一整年。
我通过 Puppet 将新配置部署到我们的十几台服务器上,并注意到它的工作方式与我预期的不同。我希望它能够消除 Apache 错误并访问超过 8 周的日志,即 9-52。相反,它保留了所有旧日志,并且根本不会创建任何超过 8 周限制的新日志!旋转 9 现已丢失,但 10-52 仍然存在。
搜索存档告诉我这是已知行为,例如Logrotate 不会删除旧日志
如何轻松摆脱旧日志?我想避免在每台服务器上手动删除它们。我还没有部署任何编排软件,所以 Puppet 必须这样做。
我的 /etc/logrotate.d/apache2 文件内容如下:
/var/log/apache2/*.log {
weekly
missingok
rotate 8
compress
delaycompress
notifempty
create 644 root adm
sharedscripts
postrotate
/etc/init.d/apache2 reload > /dev/null
endscript
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi; \
endscript
}
您可以将 postrotate 脚本添加到当前块中,以便
n
使用以下命令删除早于几天的文件:等待下一次轮换,然后将其移除,让 logrotate 再次执行其正常工作。