Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 减少.forever日志文件的大小,而不中断forever进程_Node.js_Logging_Forever - Fatal编程技术网

Node.js 减少.forever日志文件的大小,而不中断forever进程

Node.js 减少.forever日志文件的大小,而不中断forever进程,node.js,logging,forever,Node.js,Logging,Forever,由forever创建的日志文件(在/root/.forever中)已达到很大的大小,几乎填满了硬盘 如果在永久进程仍在运行时删除日志文件,永久日志0将返回未定义。记录当前永久过程以恢复的唯一方法是停止并再次启动节点脚本 有没有一种方法可以在不中断日志记录或永远过程的情况下修剪日志文件?因此Foreverjs将继续写入同一个文件句柄,并且理想情况下将支持允许您发送信号并旋转到不同文件的内容 如果没有这一点,则需要对Forever.js包进行代码更改,您的选项如下所示: 命令行版本: 备份 清空文件

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

如果在
永久
进程仍在运行时删除日志文件,
永久日志0
将返回
未定义
。记录当前
永久
过程以恢复的唯一方法是
停止
并再次
启动
节点脚本


有没有一种方法可以在不中断日志记录或
永远
过程的情况下修剪日志文件?

因此Foreverjs将继续写入同一个文件句柄,并且理想情况下将支持允许您发送信号并旋转到不同文件的内容

如果没有这一点,则需要对Forever.js包进行代码更改,您的选项如下所示:

命令行版本:
  • 备份
  • 清空文件
  • cp forever-guid.log备份&&:>forever-guid.log

    如果您以较快的速度写入日志文件,则有可能在备份和调零之间写入一条日志行,从而导致日志行丢失

    使用带有copytruncate的Logrotate 您可以将logrotate设置为监视永久日志目录,以便根据文件大小或时间自动复制和截断

    让您的节点代码处理这个问题 您可以让日志代码查看日志文件的行数,然后执行拷贝截断-这将允许您避免潜在的数据丢失


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

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

    cat /dev/null > largefile.txt