我在ubuntu 16.04上有一个logrotate配置,它意味着每天将我的日志旋转到gz。配置是这样的:
/opt/dcm4chee/server/default/log/*.log {
daily
missingok
rotate 5
compress
notifempty
create 0640 dcm4chee dcm4chee
sharedscripts
copytruncate
}
它正确生成gzip压缩日志:
server.log.1.gz
...
server.log.5.gz
然而,它也会偶尔产生一堆不必要的“备份”,这会导致磁盘使用时间过长 - 我们在有限的磁盘空间VM上运行:
server.log.1-2018063006.backup
...
server.log.1-2018081406.backup
这完全违背了我最初通过旋转和压缩有限数量的日志来限制磁盘使用的目的。
如何阻止logrotate完全生成这些“备份”?如果这意味着丢失几行日志记录,那就这样吧。
我无法找到有关此事的文件。目前我有一个crontab设置定期删除这些文件,但它似乎不是“正确”的做事方式。
遇到同样的问题,发现它是由重复的日志文件引起的。
在我的情况下,我正在记录一些nginx日志,并且通过使用create方法,这有时会发生,当它试图创建一个新的日志文件时,某种程度上nginx仍会产生新的日志并导致以下错误:
error: destination /[example path]/access.log already exists, renaming to /[example path]/access.log-2018122810.backup
所以它不断制作大量的“.backup”文件并占用我的磁盘空间。
做了一些研究之后,我找不到一个杀死所有nginx进程的好方法,所以我通过在我的logrotate.d配置中添加copytruncate
来临时修复它,它似乎解决了这个问题但是必须冒险你可能会丢失一些日志。
希望有更好的解决方案〜