由 forever
创建的日志文件(在 /root/.forever
中)已经达到了很大的大小,几乎填满了硬盘。
如果在 forever
进程仍在运行时删除日志文件,forever logs 0
将返回 undefined
。恢复记录当前 forever
进程的唯一方法是停止
它并再次启动
Node 脚本。
有没有一种方法可以在不中断日志记录或 forever
进程的情况下只修剪日志文件?
最佳答案
因此 Foreverjs 将继续写入同一个文件句柄,理想情况下会支持允许您向它发送信号并旋转到不同文件的东西。
没有它,需要更改 Forever.js 包的代码,您的选项如下所示:
命令行版本:
- 做好备份
- 清空文件
cp forever-guid.log 备份 && :> forever-guid.log;
如果您以快速的速度写入日志文件,这有轻微的风险,您最终会在备份和清零之间写入日志行,从而导致日志行丢失。
使用带复制截断的 Logrotate
您可以设置 logrotate 以监视永久日志目录,以根据文件大小或时间自动复制和截断。
让你的 Node 代码处理这个
您可以让您的日志记录代码查看日志文件的行数,然后执行复制截断 - 这可以让您避免潜在的数据丢失。
编辑:我原本认为 split
和 truncate
可以完成这项工作。他们可能可以,但是实现看起来真的很尴尬。 Split
没有将文件拆分为短文件(原始日志)和长文件(备份)的好方法。 Truncate
(除了它并不总是被安装的事实之外)不会重置写指针,因此永远只会写入它应该拥有的相同字节,从而导致奇怪的数据。
关于node.js - 在不中断 forever 进程的情况下减小 .forever 日志文件的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25410087/