首页 > 解决方案 > 仅使用 maxage 进行 Logrotate

问题描述

我正在尝试设置一个相当简单的 logrotate,据我所知,它应该支持maxage此处提到的选项(https://linux.die.net/man/8/logrotate)。在我的man logrotate. 我在跑步logrotate 3.8.6

所以我想根据年龄简单旋转而不使用旋转计数器。我看到很多例子,人们同时使用旋转和最大化。但是从我对这个人的理解来看,只使用 maxage 应该不是不可能的。

基本上我有这样的场景,我在给定日志文件的一天有多次轮换,所以我无法以任何方式预测轮换计数。并且将其设置为一个巨大的超大数字是对性能的主要影响,也是使用 -v 进行调试的痛苦。

因此,只是希望将所有日志文件保留在 X 天期间,这可能是几年的相当大的窗口。

有任何想法吗 ?

标签: logrotate

解决方案


根据手册页:

rotate *count*
  Log files are rotated count times before being removed or mailed to the address specified 
  in a mail directive. If count is 0, old versions are removed rather than rotated. Default 
  is 0.

如果您未设置此值,则默认值为 0,这意味着它会删除它轮换出的所有内容。您可以从调试转储中看到这一点,首先使用我现有的配置(旋转 4):

rotating pattern: /var/log/boot.log
 after 1 days (7 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/boot.log
  log does not need rotating (log is empty)
rotating pattern: /var/log/chrony/*.log  weekly **(4 rotations)**

与我评论该行并将其在任何地方未定义时相比:

rotating pattern: /var/log/boot.log
 after 1 days (7 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/boot.log
  log does not need rotating (log is empty)
rotating pattern: /var/log/chrony/*.log  weekly **(no old logs will be kept)**

logrotate 的主要用途之一是管理日志占用的空间量;让它旋转到无穷大而不移除任何东西违背了这个目的。您也没有发布您的实际配置文件,所以我不知道您要针对哪些其他参数进行旋转。

如果您每天轮换多次,我的主要建议是定期将那些已经轮换的日志移出该目录,以便 logrotate 不再考虑它们。这样,您的配置就会变得简单得多。


推荐阅读