当在nodejs中使用集群和winston时,日志的maxsize不起作用

lee*_*eew 3 cluster-computing node.js winston

当我在nodejs中使用集群和winston时,日志的maxsize不起作用.所有日志都会记录一个文件,尽管其大小超过了maxsize.在这里看到同样的问题:https: //github.com/flatiron/winston/issues/275

小智 9

显而易见的解决方案是:只让master登录到文件.

var winston = require('winston');
var cluster = require('cluster');

if(cluster.isMaster) {
    cluster.setupMaster({ silent: true }); // Keep cluster from automatically grabbing stdin/out/err
    for(var i = 0; i < 4; i++) {
        cluster.fork();
    }
    winston.add(winston.transport.File, { filename: 'log.txt' });
    cluster.workers.forEach(function(worker, i) {
        worker.process.stdout.on('data', function(chunk) {
            winston.info('worker ' + i + ': ' + chunk);
        });
        worker.process.stderr.on('data', function(chunk) {
            winston.warn('worker ' + i + ': ' + chunk);
        });
    });
} else {
    // Leave winston alone and only log to stdout/err in the workers
}
Run Code Online (Sandbox Code Playgroud)

然后只有一个进程保留文件描述符,因此您的日志轮换应该照常工作.