node-logger

Centralized logger for 17.Media Node.JS projects
... in the fires of Mount Doom, the dark lord Sauron forged, in secret, a master logger to control all others.
"One logger to log them all!"

Usage
First of all you have to set up your configs:
import { Level } from '@17media/node-logger';
const loggerConfig = {
base: {
logLevel: Level.INFO,
project: require('~/package.json').name,
environment: 'production',
},
Slack: {
logLevel: Level.WARN,
slackToken: SLACK_BOT_TOKEN,
slackChannel: SLACK_BOT_ALERT_CHANNEL,
},
Fluentd: {
logLevel: Level.INFO,
collectorUrl: LOG_COLLECTOR_URL,
},
Console: {
logLevel: Level.ERROR,
},
};
Then, there are two ways to continue, the easy way and the complete way:
Easy Way
This is the simple way and should cover ~90% of the use cases.
const logger = require('@17media/node-logger').createLogger(loggerConfig)('some:label');
logger.debug('track the variable value during development', { info });
logger.info('somehing worth logging for future reference', { additionalInfo });
logger.warn('somehing worth notice', { additionalInfo });
logger.error('somehing terrible happened', new Error());
logger.fatal('somehing disastrous happened', new Error(), { additionalInfo });
Complete Way
Provide configs to initiate the logger:
A log service will be used only when all corresponding configs are provided.
const { Logger } = require('@17media/node-logger');
const logger = new Logger(loggerConfig);
Use the logger like:
const { LogMessage } = require('@17media/node-logger');
logger.Log(
Level.WARN,
new LogMessage('something happened', { additionalInfo }),
'some:label:for:the:message'
);
In most situations you would want to pre-label all the messages logged in a file.
You can do it by:
const labelledLogger = logger.Label('path:to:this:file');
labelledLogger.Log(
Level.WARN,
new LogMessage('something happened', { additionalInfo })
);
You can extend LogMessage
and ErrorMessage
to create customized formatting for your context.