@brainbits/node-logger
v2.4.4
Published
Logger for node projects
Downloads
1,092
Readme
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.