在Node.js中logging文件:集群安全吗?

如果我在运行此代码的一个盒子上有4个,8个或更多的线程和群集,是否会在日志文件/文件编写器上存在资源争用? 如果是这样,你可以发表一个例子说明? 到目前为止,我所做的所有testing似乎都表明写入的数据不会交织在一起,不会被扔掉,但我并不是完全相信

谢谢!

var errLog = fs.createWriteStream(... + '/error.log'); GLOBAL.dbLog = fs.createWriteStream(... + '/db.log'); 

没有线程或集群进程的协调,所以问题归结为操作系统是否允许多个打开写入stream到一个文件。 CreateWriteStream的默认C标志是O_WRONLY || O_CREAT || O_TRUNC O_WRONLY || O_CREAT || O_TRUNC O_WRONLY || O_CREAT || O_TRUNC 。 这表明第一个问题 – 所有进程将创build一个新的截断文件(当你可能想要追加)。

所以假设您在创buildstream时将w+指定为标志…

对于Linux, 这个相关的问题表明,只要字节数小于PIPE_BUF字节(Linux上是4096,其他一些Unix上是512),就可以。

我不确定Windows上的答案是什么。