diff --git a/README.md b/README.md index 7ce5666..9453a70 100644 --- a/README.md +++ b/README.md @@ -160,6 +160,66 @@ This was mainly created for [cluster](https://github.com/LearnBoost/cluster), bu log4js-master/worker.json hookio appender parameters will be passed into the Hook constructor directly, so you can specify hook-port, hook-host etc. *NOTE* hook.io appender will currently (and probably indefinitely) explode if you enable hook.io debug because of the way log4js overrides console.log +## multiprocess (tcp socket) logger + +A multiprocess logger has been added to log4js by [dbrain](https://github.com/dbrain). This allows multiple worker processes to log through a single master process, avoiding issues with rolling etc. in a clustered environment. +This was mainly created for [cluster](https://github.com/LearnBoost/cluster), but you can adapt the example to match your needs, you know, if it fits them. +
+ #### log4js-master.json #### + # Will listen for connections on port and host + { + "appenders": [{ + "type": "logLevelFilter", + "level": "DEBUG", + "appender": { + "type": "multiprocess", + "mode": "master", + "loggerPort": 5001, + "loggerHost": "simonsaysdie", + "appender": { + "type": "file", + "filename": "muffin.log", + "maxLogSize": 104857600, + "backups": 10, + "pollInterval": 15 + } + } + }] + } + + #### log4js-worker.json #### + # Will connect to master (tcp server) and send stringified log events + { + "appenders": [{ + "type": "logLevelFilter", + "level": "DEBUG", + "appender": { + "type": "multiprocess", + "mode": "worker", + "loggerPort": 5001, + "loggerHost": "simonsaysdie" + } + }] + } + + #### ilikebeans.js #### + var cluster = require('cluster'); + var immaCluster = cluster('./doyoulikebeans'); + + // Perform the once off configuration depending on type of cluster + if (immaCluster.isMaster) { + require('log4js').configure('log4js-master.json'); + } else { + require('log4js').configure('log4js-worker.json'); + } + + // Standard cluster startup + immaCluster + .use(cluster.logger('run/logs')) + .use(cluster.pidfiles('run/pids')) + .listen(3000); ++ ## author (of this node version) Gareth Jones (csausdev - gareth.jones@sensis.com.au)