我有一個簡單的日誌記錄工具日誌數據寫入到磁盤,它的工作原理是這樣的:外部修改文件打破了Node.js的可寫流
- 使用
fs.createWriteStream
使用標記來創建可寫流'a'用於追加。這會創建或打開文件以供我將數據寫入。 - 使用
writeStream.write()
將數據寫入我的日誌文件。
這工作完全,除了在這兩種情況下:
- 我開,而我的應用程序運行日誌文件,改變一些東西,並保存日誌文件。
- 我在應用程序運行時刪除日誌文件。預期的行爲是重新創建文件並保持記錄。
在這兩種情況下,我仍然可以打電話writeStream.write()
沒有錯誤。
檢查我的writeStream
對象後,我要麼修改或應用程序運行時刪除日誌文件顯示writeStream.writable
屬性爲true
。每次我打電話writeStream.write()
writelen
財產增加,這導致我相信writeStream
認爲一切都好,即使它不是。
我的問題:
- 爲什麼修改和保存我的日誌文件外引起
writeStream.write()
停止寫入數據到我的檔案?我如何解決它? - 爲什麼從外部刪除我的日誌文件會導致
writeStream.write()
停止將數據寫入我的文件?我如何解決它?
感謝擡起頭來!你能指出我在正確的方向指導如何發送信號? –
取決於你從哪裏發送信號。如果命令行或shell腳本然後'kill -SIGHUP pid'。節點,Python,Ruby等有相同的庫函數。 –