Javascript 从外部修改文件会中断node.js中的可写流
我有一个简单的日志记录工具将日志数据写入磁盘,它的工作原理如下:Javascript 从外部修改文件会中断node.js中的可写流,javascript,node.js,file,stream,Javascript,Node.js,File,Stream,我有一个简单的日志记录工具将日志数据写入磁盘,它的工作原理如下: 使用fs.createWriteStream创建一个可写流,使用标记“a”进行附加。这将为我创建或打开要写入数据的文件 使用writeStream.write()将数据写入我的日志文件 除以下两种情况外,这一点非常有效: 我在应用程序运行时打开日志文件,更改某些内容,然后保存日志文件 我在应用程序运行时删除日志文件。预期的行为是重新创建文件并保持日志记录 在这两种情况下,我仍然可以调用writeStream.write(),没有错
fs.createWriteStream
创建一个可写流,使用标记“a”进行附加。这将为我创建或打开要写入数据的文件writeStream.write()
将数据写入我的日志文件writeStream.write()
,没有错误
在应用程序运行时修改或删除日志文件后检查我的writeStream
对象,会将writeStream.writeable
属性显示为true
。每次我调用writeStream.write()
时,writelen
属性都会增加,这使我相信writeStream
认为一切都是好的,即使它不是
我的问题是:
writeStream.write()
停止向我的文件写入数据?我怎么修理它writeStream.write()
停止向我的文件写入数据?我怎么修理它您尝试执行的标准操作是向应用程序发送信号(
SIGHUP
或SIGUSR1
),然后在信号处理程序中关闭应用程序并重新打开文件。这称为“日志旋转”。有许多节点包可以为您完成此操作,您也可以自己完成此操作:-)谢谢您的提醒!你能告诉我如何发送信号的正确方向吗?取决于你从哪里发送信号。如果是命令行或shell脚本,则kill-SIGHUP pid
。node、Python、Ruby等中都有等价的库函数。