fix(pm2): was missing logs on instance=0

This commit is contained in:
Gareth Jones 2017-07-28 08:12:51 +10:00
parent 9b0dff3033
commit fc3b0e243c
2 changed files with 22 additions and 7 deletions

View File

@ -12,8 +12,15 @@ log4js.configure({
pm2: true,
pm2InstanceVar: 'INSTANCE_ID'
});
const logger = log4js.getLogger('app');
setInterval(() => {
logger.info("I'm forever blowing bubbles");
}, 1000);
logger.info("I'm forever blowing bubbles ", process.env.INSTANCE_ID);
logger.info("I'm forever blowing bubbles ", process.env.INSTANCE_ID);
logger.info("I'm forever blowing bubbles ", process.env.INSTANCE_ID);
logger.info("I'm forever blowing bubbles ", process.env.INSTANCE_ID);
logger.info('last bubbles', process.env.INSTANCE_ID);
// give pm2 time to set everything up, before we tear it down
setTimeout(() => {
log4js.shutdown(() => {
console.error('All done, shutdown cb returned.');
});
}, 5000);

View File

@ -142,6 +142,14 @@ function workerDispatch(logEvent) {
process.send({ topic: 'log4js:message', data: serialise(logEvent) });
}
function isPM2Master() {
return config.pm2 && process.env[config.pm2InstanceVar] === '0';
}
function isMaster() {
return cluster.isMaster || isPM2Master();
}
/**
* Get a logger instance.
* @static
@ -150,8 +158,8 @@ function workerDispatch(logEvent) {
*/
function getLogger(category) {
const cat = category || 'default';
debug(`creating logger as ${cluster.isMaster ? 'master' : 'worker'}`);
return new Logger((cluster.isMaster ? sendLogEventToAppender : workerDispatch), cat);
debug(`creating logger as ${isMaster() ? 'master' : 'worker'}`);
return new Logger((isMaster() ? sendLogEventToAppender : workerDispatch), cat);
}
function loadConfigurationFile(filename) {
@ -194,7 +202,7 @@ function configure(configurationFileOrObject) {
// PM2 cluster support
// PM2 runs everything as workers - install pm2-intercom for this to work.
// we only want one of the app instances to write logs
if (config.pm2 && process.env[config.pm2InstanceVar] === '0') {
if (isPM2Master()) {
debug('listening for PM2 broadcast messages');
process.removeListener('message', receiver);
process.on('message', receiver);