Winston:多进程日志记录

Posted

技术标签:

【中文标题】Winston:多进程日志记录【英文标题】:Winston: multi process logging 【发布时间】:2018-06-21 18:50:12 【问题描述】:

我创建了一个 nodejs 应用程序,它封装了四个 nodejs 进程。 到目前为止,所有单个 nodejs 进程都在使用 winston npm 记录到不同的日志文件。 现在我想制作一个日志文件,每个节点进程都可以在其中记录。

winston 是否隐式确保日志数据的序列化以使其进程安全(多个进程写入同一个文件而无需担心竞争条件或死锁等)?或者开发人员的工作是确保在某个时间只有一个进程专门写入日志文件。

【问题讨论】:

【参考方案1】:

Winston 是否隐式确保日志数据的序列化到 让它过程安全?

答案是

当您有多个进程通过 Winston 将日志写入同一个文件时,数据会丢失。这实际上是他们决定不正确处理的know issue。

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

假设你的软件使用MongoDB,最后一个在winston-mongodb的帮助下真的很容易实现。

1。使用 NPM 安装它

npm install --save winston-mongodb

2。配置它

require('winston-mongodb');

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

【讨论】:

以上是关于Winston:多进程日志记录的主要内容,如果未能解决你的问题,请参考以下文章

Winston 日志记录对象

运行单元测试时禁用winston日志记录?

如何在 Winston/Node.js 中设置日志级别

如何刷新winston日志?

温斯顿:尝试在没有传输的情况下写入日志 - 使用默认记录器

温斯顿日志到文件不起作用