Newborn Programming Monsters

    cluster-ipc-logger
    TypeScript icon, indicating that this package has built-in type declarations

    1.1.8 • Public • Published

    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).

    Install

    npm i cluster-ipc-logger

    DownloadsWeekly Downloads

    0

    Version

    1.1.8

    License

    MIT

    Unpacked Size

    473 kB

    Total Files

    12

    Last publish

    Collaborators

    • scrwdrv