fs.write仅在关闭服务器后注册

时间:2015-06-24 17:32:20

标签: node.js logging fs

我正在编写聊天服务器,我正在尝试制作聊天记录。我正在使用fs.write将消息写入名为logs.txt的文件。

问题是消息不会像我希望的那样立即显示在日志文件中,它们仅在我关闭服务器后出现。我该如何解决这个问题?

这是我使用的代码:

fs.open('./logs.txt', 'a', 0666, function(err, fd) {
    if (err) {
        console.log('file could not be opened');
    }
    fs.write(fd, data, 0, data.length, null, function(err, written, buffer) {
        if (err) {
            console.log('log could not be written');
        }
        fs.close(fd, function() { console.log('log written') });
    })
})

2 个答案:

答案 0 :(得分:2)

您可以使用同步版本closeThisWindow() - > fs.write
实际上,保存日志就像字符串,我认为将消息附加到文件对我来说更合适,你可以查看fs.writeSync() here

答案 1 :(得分:1)

出于性能原因,现代操作系统会缓冲内存中的磁盘写入并偶尔刷新到磁盘,更喜欢进行多次写入而不是多次写入多次写入。

使用fs.fsync或其同步副本(幽默命名的fs.fsyncSync)强制操作系统同步内存和磁盘内容。