@brainbits/node-logger
TypeScript icon, indicating that this package has built-in type declarations

2.4.4 • Public • Published

Logger

Installation

yarn add @brainbits/node-logger @brainbits/node-logger-formatter-monolog

or

npm install -S @brainbits/node-logger @brainbits/node-logger-formatter-monolog

Configuration

Adding a formatter

You have to add a formatter to your package.json. E. g. the monolog formatter:

"nodeLogger": {
    "formatter": "@brainbits/node-node-logger-node-logger-formatter-monolog"
}

Parameters

You can add more parameters to your "nodeLogger": {} section.

channel Channel of the logger (string)

Default: Name of your module

maxLevel Maximum level (string)

Default: info

timerLevel Timer level (string)

Default: debug

levels Levels (sorted array)

Default:

    'emergency',
    'alert',
    'critical',
    'error',
    'warning',
    'notice',
    'info', // max level default
    'debug',
]

outputs Outputs (object)

Default:

{
    emergency: 'stderr',
    warning: 'stdout',
}

plugins Plugins [Optional]

Example

"nodeLogger": {
    "plugins": [
        "@brainbits/node-node-logger-plugin-<name>"
    ]
}

formatter Module name of the formatter (see "Adding a formatter")

Environment variables

You can set your own ENV_VARS in your package.json with env(<env>, <fallback[optional]>)

Example

"nodeLogger": {
    "maxLevel": "env(LOGGER_LEVEL, info)"
}

This will take the value of LOGGER_LEVEL or "info" as fallback. The fallback is optional. If there is no suitable value the default is set.

Usage

Create a Logger instance

import { Logger } from '@brainbits/node-logger';

const logger = new Logger();

Arguments

import { Logger } from '@brainbits/node-logger';

const config = {
    maxLevel: 'error',
    level: [
        'error',
        'info',
        'debug',
    ],
    formatter: (event) => {
        console.log(event)
    }
};

const logger = new Logger(config);

First argument is a string to define your context.

Second argument is the entire configration object. You can override the configuration in your package.json here.

Default logger

import Logger from '@brainbits/node-logger';

const logger = new Logger();

const meta = {
    foo: 'bar';
};

logger.info('This is my message', meta);

Timer feature

There is a timer function logger.start(<message>)

import { logger } from '@brainbits/node-logger';

const meta = {
    foo: 'bar';
};

logger.start('timer');

//... somewhere else in your code ...

function loadAsyncShit() {
    return fetch('https://api/resource?query=blah')
        .then(result => {
            logger.stop('timer', meta);
            return result;
        };
};
// Could output: [2010-01-31 23:59:59] module.DEBUG: timer {"foo":"bar","timeMs":75} []

Anatomy

logger.<level>(<message>, <meta>)

Levels <level>

Pick one of these levels (default):

  • 0: emergency
  • 1: alert
  • 2: critical
  • 3: error
  • 4: warning
  • 5: notice
  • 6: info
  • 7: debug (default: no ouput [maxLevel])

Message <message>

Message can be a string, array or object (and Error object)

Meta <meta>

Must be an object. Used for additional context data.

logger.info('This is my message', { foo: 'bar' });

Caution: If message is an object and meta has the same property, meta will override this property.

Readme

Keywords

Package Sidebar

Install

npm i @brainbits/node-logger

Weekly Downloads

238

Version

2.4.4

License

MIT

Unpacked Size

53.2 kB

Total Files

18

Last publish

Collaborators

  • tmporary
  • examinator
  • bb-bot