我正在设置 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,请从日志文件名中删除日期
- 如果您希望守护进程处理日志轮换并在文件名中包含日期,请删除轮换选项并添加您希望保留日志文件的天数的最大值
- 删除创建选项,它无论如何都不会做任何事情,正如我在上面的评论中所说的那样