1.1.8 • Published 5 years ago

cluster-ipc-logger v1.1.8

Weekly downloads
4
License
MIT
Repository
github
Last release
5 years ago

cluster-ipc-logger

This logger is designed to collect logs from cluster workers, child processes even independent node.js processes through IPC (Inter-Process Communication).

Preview

cluster-ipc-logger

Installation

npm i cluster-ipc-logger

Usage

import { loggerServer, loggerClient } from 'cluster-ipc-logger';
import * as cluster from 'cluster';


if (cluster.isMaster) /* master */ {

    // logger master
    const logger = new loggerServer({
        debug: true,
        directory: './logs',
        saveInterval: 60000 // 1 minute
    });

    // logger for master
    const log = new loggerClient({
        system: 'master',
        cluster: 0
    })

    // log listeners
    logger
        .on('fatal', (msg) => {
            // on fatal logs
        })
        .on('error', (msg) => {
            // on error logs
        })
        .on('all', (msg) => {
            // on all logs
        });

    // detect ^c and save logs before exiting
    process.on('SIGINT', () => {
        logger.save().then(() => {
            process.exit();
        }).catch((err) => {
            throw err;
        });
    });

    // fork workers
    for (let i = 6; i--;) {
        cluster.fork({ workerId: i });
        log.info(`forking worker ${i}`);
    }

    log.debug('debug logs only show up when debug option is set to true');
    log.info('every severity of logs will be save to local storage');
    log.warn('when an error or fatal log occured,');
    log.error('the log content is also saved to another file with prefix [error],');
    log.error('so it is easier to examine the major flaws');


} else /* worker */ {

    // logger for worker
    const log = new loggerClient({
        system: 'worker',
        cluster: process.env.workerId
    });

    log.debug(`worker ${process.env.workerId} standing by`);

}

JSON

//log json
log.info({
    eBooks: [
        {
            language: 'Pascal',
            edition: 'third'
        },
        {
            language: 'Python',
            edition: 'four'
        },
        {
            language: 'SQL',
            edition: 'second'
        }
    ]
});

Note

loggerClient will catch unhandledRejection & uncaughtException and log it as fatal. After sending it to loggerMaster it will automatically kill the client process with process.exit() (as it should be).

1.1.8

5 years ago

1.1.7

5 years ago

1.1.6

5 years ago

1.1.5

5 years ago

1.1.4

5 years ago

1.1.3

5 years ago

1.1.2

5 years ago

1.1.1

5 years ago

1.1.0

5 years ago

1.0.9

5 years ago

1.0.8

5 years ago

1.0.7

5 years ago

1.0.6

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago