Wondering what’s next for npm?Check out our public roadmap! »

    logiks

    1.0.1 • Public • Published

    Logiks 📝 Build Status

    Simple colored logger module with levels of logging and semantic output.

    const logger = new Logiks({
        level: 'debug',
        colors: true,
    });
     
    logger.error('System', 'Component', 'Message')
     
    > 2017-11-30 20:03:35 [System] [Component] Message

    Signature semantics

    Logger can take up to 4 different positional arguments-groupings:

    logger.error(
        system: string,
        component: string',
        subCategory: string,
        message: string',
    )
    

    Note that message argument will appear anyway and if nth argument missed it means that n-1th argu,ent is message argument. Let assume we have code like bellow:

    logger.special('Payments started');
     
    logger.info('API', 'Payments', 'Performing payments');
    /* ...*/
    const response = {status: '200', confirmationHash:'d8e8fca2dc0f896fd7cb4cb'};
    logger.info.json('API', 'Payments', 'v3.2', 'Payments was performed', response);

    The output will be:

    2018-09-02 02:55:27 Payments started!
    2018-09-02 02:01:12 [API] [Payments] Performing payments
    2018-09-02 02:01:39 [API] [Payments] (v3.2) Payments was performed
    2018-09-02 02:01:39 ───┬────────────────────────────────────────────────────────────────────────
    2018-09-02 02:01:39 0  │ {
    2018-09-02 02:01:39 1  │   "status": "200",
    2018-09-02 02:01:39 2  │   "confirmationHash": "d8e8fca2dc0f896fd7cb4cb"
    2018-09-02 02:01:39 3  │ }
    2018-09-02 02:01:39 ───┴────────────────────────────────────────────────────────────────────────
    

    Groups

    You can create logger instance already with grouping curried with:

    1. In configuration.Look at config groupings.
    2. With methods .withSystem, .withComponent and .withSubcat.

    Config

    Option Description Default
    colors Should use colors false
    level Log level. Look levels info
    date Should every message line prefixed with date or not true
    levels Levels description and priorities. Index in table is priority, and value is a array where 1st element is name of level and second is a coloring function.
    [
        ['silly', chalk.white],
        ['debug', chalk.green],
        ['info', chalk.magenta],
        ['warning', chalk.yellow],
        ['error', chalk.red],
        ['special', chalk.cyan.underline],
        ['critical', chalk.red.underline.bold],
    ]
    

    Groups

    All is null by default

    system
    component (requires system>/td>
    subCat (requires component>

    json

    json.maxLength Max length of lines in json message. JSON will be stringified counting this option. 64
    json.maxRowLength Max line length in json message, if symbols count exceeded it will be striped by ... process.stdout.columns - 5
    json.defaultColor Default coloring function of messages in json chalk.rgb(167, 101, 121)

    Levels

    Levels are prioritized entities to separate log messages by semantic. You can cover yout code with logging different depth and if you want to run your app on production mode you will not see debug log level. These are default log levels of Logiks:

    • silly: chalk.white
    • debug: chalk.green
    • info: chalk.magenta
    • warning: chalk.yellow
    • error: chalk.red
    • special: chalk.cyan.underline
    • critical: chalk.red.underline.bold

    JSON

    Every level logging function has .json property.

    logger.warning.json('API', 'Payments', 'v3.2', 'Health check failed', {"reward":128.23,"instances":2,"availableApis":[{"host":"127.0.0.1","port":8888},{"host":"127.0.0.1","port":8889}],"healthCheck":false})

    Will produce:

    2018-09-01 10:58:16 [API] [Payments] (v3.2) Health check failed
    2018-09-01 10:58:16 ───┬───────────────────────────────────────────────────────────────────
    2018-09-01 10:58:16 0  │ {
    2018-09-01 10:58:16 1  │   "reward": 128.23,
    2018-09-01 10:58:16 2  │   "instances": 2,
    2018-09-01 10:58:16 3  │   "availableApis": [
    2018-09-01 10:58:16 4  │     { "host": "127.0.0.1", "port": 8888 },
    2018-09-01 10:58:16 5  │     { "host": "127.0.0.1", "port": 8889 }
    2018-09-01 10:58:16 6  │   ],
    2018-09-01 10:58:16 7  │   "healthCheck": false
    2018-09-01 10:58:16 8  │ }
    2018-09-01 10:58:16 ───┴───────────────────────────────────────────────────────────────────
    

    Install

    npm i logiks

    DownloadsWeekly Downloads

    2

    Version

    1.0.1

    License

    MIT

    Unpacked Size

    19.2 kB

    Total Files

    10

    Last publish

    Collaborators

    • avatar