小编clo*_*ure的帖子

node.js 多进程日志记录

我现在正在研究一个基于集群的 node.js 项目。我被困在日志中。经过一番研究,我想出了一个解决方案。就这个。我不知道这是否是个好主意。这个想法是这样的。只有master进程可以写入日志文件,如果当前进程是worker,则向master发送日志消息然后写入日志文件,而master可以直接写入日志文件。这可以避免多个进程打开并写入同一个文件。

var util = require('util');
var fs = require('fs');
var cluster = require('cluster');

var logger = module.exports;

var levels  = ['debug', 'info', 'warn', 'error', 'fatal'];
var logLevel = 'debug';

var logfile = null;
var errorLogfile  = null;


if(cluster.isMaster){

    logfile = fs.createWriteStream('debug.log', {flags:'a'});
    errorLogfile = fs.createWriteStream('error.log', {flags:'a'});

    cluster.on('online', function(worker){
    //collect log message from child and write to logfile.
    worker.on('message', function(msg){
        if(msg.type == 'logging') {
        var level = msg.data.level;
        var logStr = msg.data.msg;
        if(levels.indexOf(level) >= levels.indexOf('error')){
            errorLogfile.write(logStr + '\n');
        }else{ …
Run Code Online (Sandbox Code Playgroud)

logging cluster-computing node.js

2
推荐指数
1
解决办法
2959
查看次数

标签 统计

cluster-computing ×1

logging ×1

node.js ×1