我有博客,用Node.js编写,没有Express ...我想实现访问日志。
我想将日志存储在JSON中。有两个问题:首先,我不想打开文件句柄来访问日志文件,写入它,然后关闭它。我想在服务器启动时打开它,并在关闭服务器时写入并关闭它。可能吗?它真的有效吗?
第二个问题:我想添加新日志而不是写整个文件。日志采用数组的形式。是否有任何方法重写数组的结束括号(]
),在其后面添加日志对象并添加]
结束?
答案 0 :(得分:1)
首先,我不想打开文件句柄来访问日志文件,写入 它,然后关闭它。我想在服务器启动时打开它, 当我关闭服务器时写入并关闭它。可能吗? 它真的有效吗?
是的,它可行且有效。对您而言,最佳解决方案是open WriteStream
一次,然后使用.write()
method编写所有数据:
var log = fs.createWriteStream('./my.log', {
flags: 'a' // Open file for appending. The file is created if it does not exist.
})
log.write('Application started');
比自己处理文件描述符更安全,因为as said in fs.write
documentation:
请注意,在同一文件上多次使用
fs.write
是不安全的 无需等待回调。对于这种情况, 强烈建议使用fs.createWriteStream
。
我想附加新日志而不是写整个文件
只需使用追加标记a
而不是默认写入标记w
。有关详细信息see fs.open
docs。
日志采用数组形式。有没有办法重写闭括号 数组(
]
)的用法,在其后面添加日志对象并添加]
到结尾?
以这种格式存储日志是一个非常糟糕的主意。
日志记录的整个想法是能够快速将日志吐出到某个日志文件中。您需要编写相当复杂的逻辑来正确删除然后重新创建结束括号]
。
当然,这是可能的。但不这样做是一个更好的解决方案。