【问题标题】:Unlimited logs with logrotate使用 logrotate 的无限日志
【发布时间】:2013-02-26 10:10:03
【问题描述】:

在普通的 logrotate.d 配置文件中,有没有办法设置无限量的潜在日志?

我似乎唯一能想到的就是将它设置为一个永远无法满足的疯狂数字。比如:

/var/log/app/* {
  missingok
  weekly
  copytruncate
  rotate 10000000000
  compress
  notifempty
  olddir /var/log/app/old
}

但这对我来说似乎很老套。

【问题讨论】:

  • 有趣的问题。我似乎记得rotate 0 只保留当前日志。您是否尝试过 rotate -1 或完全忽略它?
  • 您已经找到了解决方案,现在让我们交叉手指并假设 logrotate 使用 64 位整数来存储旋转值。
  • @ypnos 旋转计数的数据类型为int,仅保证至少为16位。这将您限制为 2**15-1=32767。然而,在实践中,今天它通常是 32 位,产生 2**31-1=2147483647。无论如何,即使只有 16 位 int,它也应该在可预见的未来持续:每天一个日志,几乎是 89 年。

标签: linux logrotate


【解决方案1】:

来自UNIX logrotate man page

旋转计数

日志文件在被删除或邮寄到 邮件指令中指定的地址。如果 count 为 0,则旧版本为 移除而不是旋转。

所以我猜你需要写一个巨大的数字才能工作。

【讨论】:

  • 对不起,我应该提到我先检查了手册页。它没有说什么,但我只是想知道是否有人有更好的主意。有一天,这个巨大的数字可能会得到满足:) 我想一个想法可能是一个 cron 作业,当它达到一定数量时将日志移动到 /old/old 文件夹......
  • 好的!所以我重新检查了手册页:) 好吧,我认为这是个好主意,当然。您可以创建此脚本来检查目录中的文件数,例如if [ $(ls -1 /dir | wc -l) -ge $BIG_NUMBER ]; then bla bla bla。我认为将数十亿个日志文件一起存储是不好的。如果您需要信息,最好将信息存储在不同的地方,以便在文件系统发生问题时可以恢复它。不时进行完整备份怎么样,以便在必要时从备份中恢复?
  • 当然,这是最终的计划。这更像是解决实际问题(以惊人的速度生成日志的应用程序)的创可贴。对于实际的应用程序所有者,我只知道如果可以使用“无限”设置直到可以实施“真正”解决方案(阻止应用程序生成这么多该死的日志!现在它会),他们会在晚上睡得更好每 10-15 分钟轮换 20MB 日志...)谢谢!我会给你答案。
  • 哇!因此,这绝对是检查应用程序的问题。您还应该将size 增加到相当大的值。同样,手册页没有说明限制,但 20MB 应该没问题。祝你好运,@stewbert!
猜你喜欢
  • 2016-09-08
  • 2018-06-12
  • 2012-12-18
  • 2020-11-11
  • 2017-04-30
  • 1970-01-01
  • 2021-02-28
  • 2019-12-14
  • 2017-03-29
相关资源
最近更新 更多