集群时防止多个控制台日志输出

Prevent multiple console logging output while clustering

我正在为 nodejs 使用 cluster 模块。

我是这样设置的:

var cluster = require('cluster');
if (cluster.isMaster) {
  var numCPUs = require('os').cpus().length;
  for (var i = 0; i < numCPUs; i++) {
    cluster.fork();
  }
}else{
     console.log("Turkey Test");
}

现在,我在我的 PC 上创建了 6 个线程(6 个内核)。所以,当调试我的应用程序并从控制台读取数据时,会出现:

有没有办法让console.log无论有多少簇运行只输出一次?

您可以利用可以与工作人员通信的事实,并发送一条消息告诉每个工作人员是否应该记录。你会发送它,以便只有一个工人(例如第一个)应该记录:

var cluster = require('cluster');
if (cluster.isMaster) {
  var numCPUs = require('os').cpus().length;
  for (var i = 0; i < numCPUs; i++) {
    cluster.fork().send({doLog: i == 0});
  }
}else{
  process.on('message', function(msg) {
    if(msg.doLog) {
      console.log('Turkey Test');
    }
  });
}