logrotate 中带有 copytruncate 选项的无限文件

logrotate 中带有 copytruncate 选项的无限文件

当我使用具有以下配置的 logrotate 时:

/home/ubuntu/.pm2/logs/* {
        rotate 2
        size 200k
        missingok
        notifempty
        compress
        delaycompress
        copytruncate
        create 0640 ubuntu ubuntu
}

我的文件(我们称之为test)在达到 200k 之前不会旋转。达到 200k 后,它会被复制截断。我剩下test0k(正确!)和test.1> 200k 的位置。

问题是第二天我会得到test> 0k(正确增长)、test.10k 和test.1.1> 200k。随着时间的推移,我最终会得到无数个test.1.1.1.1...0k 的,最后一个 > 200k 的是在昨天创建的。

我最初的想法是有两个文件,test大小均小于 200k,还有一个较旧的仅日志文件。

我需要使用 copytruncate,因为如果我不知道 PM2 进程将继续写入旧日志文件。

我究竟做错了什么?

答案1

对于任何遇到类似问题的人来说。

问题出在这一行:

/home/ubuntu/.pm2/logs/* {

尤其是*应该换成*。日志,否则,已轮换的文件(扩展名为 .1 等)也应在下一个轮换周期中轮换。

这修复了该问题:

/home/ubuntu/.pm2/logs/*.log {

相关内容