每天使用 logrotate 清除日志文件

Wipe clean logfile on daily basis with logrotate

我想每天清理一个 Docker 容器日志(不需要 store/archive 数据)。我在 /etc/logrotate.d 中创建了一个名为 docker 的文件,并将以下内容放入其中:

/var/lib/docker/containers/*/*.log {
  rotate 0      #do not keep archives
  daily         
  missingok
  copytruncate  #continue working in the same log file
}

好吧,但它不起作用。所以,显然我的 logrotate 配置中有些地方不对。 AFAIK,我不需要为此设置 crontab。我的配置错了吗?有什么我遗漏的吗?

有没有办法 运行 和测试 logrotate 而无需等待一天?

rotate 0在这里是多余的,0是轮换的默认值,也就是说,没有轮换,旧的被删除。

您可以使用

对其进行测试
$ logrotate -f /etc/logrotate.d/docker

最好先放入 rotate 1 进行测试,然后再放入 rotate 0 以检查 logrotate 是否正常运行。

如果 logrotate 安装正确,那么 /etc/cron.daily/logrotate 中会有一个 crontab 条目。此文件读取配置文件 /etc/logrotate.conf,其中包括 /etc/logrotate.d

下的所有内容

HTH