当我在此配置中使用 logrotate 时:
/home/ubuntu/.pm2/logs/* {
rotate 2
size 200k
missingok
notifempty
compress
delaycompress
copytruncate
create 0640 ubuntu ubuntu
}
我的文件(我们称之为test
)在达到 200k 之前不会旋转。当它达到 200k 时,它会被复制截断。我剩下test
0k(正确!)和test.1
> 200k。
问题是第二天我会得到test
> 0k(正确增长),test.1
在0k和test.1.1
> 200k。随着时间的推移,我最终将test.1.1.1.1...
在 0k 处获得无穷无尽的数量,而昨天创建的最后一个在 > 200k 处。
我最初的想法是有两个文件,test
大小小于 200k 的文件和另一个更旧的日志文件。
我需要使用 copytruncate,就好像我没有 PM2 进程将继续写入旧日志文件一样。
我究竟做错了什么?
对于任何偶然发现类似问题的人。
问题出在这一行:
特别是,catch-all *应该与*.log交换,否则,旋转的文件(扩展名为 .1 等)也应在下一个轮换周期中轮换。
这解决了这个问题: