logrotate 没有按预期工作

logrotate 没有按预期工作

我正在设置 logrotate 并意识到其中一些选项的解释或理解有误。

我的 logrotaterotate 52关键字每次轮换(每天)时都会创建 52 个相同日志的文件。

localhost_access_log.2014-10-23.txt.1.gz
localhost_access_log.2014-10-23.txt.2.gz
localhost_access_log.2014-10-23.txt.3.gz
localhost_access_log.2014-10-23.txt.4.gz
localhost_access_log.2014-10-23.txt.5.gz
localhost_access_log.2014-10-23.txt.6.gz
localhost_access_log.2014-10-23.txt.7.gz
localhost_access_log.2014-10-23.txt.8.gz
localhost_access_log.2014-10-23.txt.9.gz
localhost_access_log.2014-10-23.txt.10.z
localhost_access_log.2014-10-23.txt.11.gz
localhost_access_log.2014-10-23.txt.12.gz
localhost_access_log.2014-10-23.txt.13.gz
localhost_access_log.2014-10-23.txt.14.gz

我还没有找到使用其内置功能删除旧日志文件的方法。

有人能解释一下为什么它会将单日日志文件压缩成 52 个部分吗?
如何使用其内置选项删除超过 90 天的日志maxage

我的配置文件是:

/var/log/localhost_access_log.*.txt {
  copytruncate
  daily
  rotate 52
  compress
  missingok
  create 640 tomcat7 tomcat7
}

答案1

对于第一个问题,也许你应该发布你的配置。

删除超过 90 天的日志的选项是

maxage 90

答案2

我认为这里的问题在于您的配置中的“*”,以及日志文件的文件名中的日期。您基本上告诉 logrotate 保留与“/var/log/localhost_access_log.*.txt”表达式匹配的每个文件的 52 个版本,在您的情况下是每天一个日志文件。我不确定为什么它会立即创建所有 52 个版本,但最终您将得到一个包含日志和 51 个空文件的压缩文件。

要修复这个配置:

  • 要么使用 logrotate 来管理每日轮换,要么使用守护进程,如果你想使用 logrotate,请从日志文件名中删除日期
  • 如果您希望守护进程处理日志轮换并在文件名中包含日期,请删除轮换选项并添加您希望保留日志文件的天数的最大值
  • 删除创建选项,它无论如何都不会做任何事情,正如我在上面的评论中所说的那样

相关内容