我怎样才能旋转我写在node.js文件?

我正在将logging写入node.js中的一个文件中,并且我需要每隔很多行或持续时间使用一个新文件来旋转文件,但是在这个过程中我不能丢失任何行。 如果我尝试使用fs.createWriteStream来创build一个新的stream,我最终会通过覆盖旧的stream来丢失行。 任何意见将不胜感激。

不要覆盖旧的stream。 创build新的stream作为一个单独的资源。

var activestream; function startup() { activestream = fs.createWriteStream('path'); } function record(line) { activestream.write(line); } function rotate() { var newstream = fs.createWriteStream('path2'); activestream.end(); activestream = newstream; } 

…这样的事情应该工作。 显然你必须弄清楚如何pipe理path。

我将在这里给出一个非常规的答案。

你可以考虑像Winston这样的现成的库,它具有经过良好testing的function,可以完全满足你的需求。 鉴于它是为了写日志,但你也可以很容易地写你的csv条目。

使用winston的另一大好处是它支持多种传输方式,所以你不仅可以写入文件并旋转它们,还可以写入其他媒体MongoDB和其他一些。

它也有条件写作之类的东西,你可以定义自定义的“日志级别”来为你的文件写入不同的functionlogging。

我build议你在烹制你自己的解决scheme之前检查一下。

我build议编写自己的streampipe理器,类似于Jason's,但是在请求循环时不要结束stream,而应该让写入完成,暂停stream,旋转文件,然后恢复stream。 每个文件只需要一个stream,你不需要重新创build它。