Rename 和 Copytruncate 是两种主流的日志轮转方式,各有优缺点:
Rename 方式:
- 原理:将当前日志文件重命名为备份文件名,然后让应用创建新的日志文件
- 优点:原始文件重命名后不再被写入,数据完整性好,不会丢失日志
- 缺点:重命名和创建新文件之间可能有短暂的日志写入中断
Copytruncate 方式:
- 原理:先复制当前日志文件内容到新文件,然后截断(清空)原始文件
- 优点:文件描述符不变,应用无感知,不会出现写入中断
- 缺点:复制和截断之间可能丢失少量日志或重复写入;大文件复制会产生较高的磁盘 I/O 开销
开发者可以根据业务对日志完整性和连续性的要求,结合文件大小、时间、数量等规则选择合适的轮转策略。