减少.forever日志文件的大小而不会永远中断进程

时间:2014-08-20 16:39:45

标签: node.js logging forever

/root/.forever创建的日志文件(forever)已达到很大的范围,几乎填满了硬盘。

如果在forever进程仍在运行时要删除日志文件,forever logs 0将返回undefined。记录当前forever进程的唯一方法是再次stop它和start节点脚本。

有没有办法在不中断日志记录或forever进程的情况下修剪日志文件?

2 个答案:

答案 0 :(得分:0)

所以Foreverjs将继续写入相同的文件句柄,理想情况下会支持允许您向其发送信号并旋转到其他文件的内容。

如果没有,需要在Forever.js包上进行代码更改,您的选项如下:

命令行版本:

  1. 进行备份
  2. 取消文件
  3. cp forever-guid.log backup && :> forever-guid.log;

    如果您以快速的速度写入日志文件,这将有一点风险,您最终会在备份和归零之间写入日志行,从而导致丢失日志行。

    使用Logrotate w / copytruncate

    您可以设置logrotate以观察永久日志目录,以根据文件大小或时间自动复制和截断。

    让你的节点代码处理这个

    您可以让您的日志记录代码查看日志文件的行数,然后执行复制截断 - 这样可以避免潜在的数据丢失。

    编辑:我原本以为splittruncate可以胜任这项工作。他们可能会,但实现看起来真的很尴尬。 Split没有很好的方法将文件拆分为短文件(原始日志)和长文件(备份)。 Truncate(除了它并不总是安装的事实之外)不会重置写指针,因此永远只会写入相同的字节,从而产生奇怪的数据。

答案 1 :(得分:0)

您可以截断日志文件而不会丢失其句柄(reference)。

cat /dev/null > largefile.txt