温斯顿:多进程日志记录

9

我创建了一个Node.js应用程序,封装了四个Node.js进程。到目前为止,所有单独的Node.js进程都使用winston npm记录到不同的日志文件中。现在我想创建一个单一的日志文件,让每个Node进程都可以记录。

winston是否隐式保证了日志数据的序列化以使其进程安全(多个进程写入同一文件而不必担心竞争条件或死锁等)?还是开发人员需要确保只有一个进程在某个时间独占地写入日志文件。

1个回答

9

温斯顿是否隐含保证日志数据的序列化以确保其安全处理?

答案是否定的。

当多个进程通过Winston写入日志到同一个文件时,数据会丢失。这实际上是他们决定不适当地解决的已知问题

有很多选择,您可以更改日志记录工具,使用进程间通信并仅通过主进程调用Winston,使用消息代理或甚至将日志写入数据库。

假设您的软件使用MongoDB,则最后一种方法非常容易实现,只需使用winston-mongodb即可。

1. 使用NPM安装它

npm install --save winston-mongodb

2. 配置它

require('winston-mongodb');

const options = {};
winston.add(winston.transports.MongoDB, options);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接