Request based log tracking in Node JS
2 min readJan 19, 2019
Preface
In normal scenario, tracking and processing request is little typical in Node JS. This library is trying to make that simpler and effective. You can just import and add logs like all other logger. Library will take care of everything
Features
- Adds Unique Identifier to logs.
- Differentiate and tracks different requests.
Getting started.
Request tracking example after using this logger
Install
npm install --save uuid-logger
Usage
App.js : Add unique Identifier to each request
const Express = require('express');
var Logger = new (require('uuid-logger'))();let App = Express();
App.use(Logger.addRequestId());
Logger.js : Require Uuid Logger, add customized formatter
- Add Console Logger
// In logger.jsconst _ = require('lodash');
const Moment = require('moment');
const Logger = new (require('uuid-logger'))();const formatter = (logEntry) => {
let timeStamp = Moment().format('YYYY-MM-DD HH:mm:ss.MS');
return timeStamp + ' - ' + logEntry.level + ': ' + _.get(logEntry, 'meta.message');
};Logger.addTransport({
console: {
name: 'Console Logger',
level: 'info',
colorize: true,
formatter: formatter
}
});module.exports = Logger.getLogger();
2. Add File Logger
// In logger.jsconst _ = require('lodash');
const Moment = require('moment');
const Logger = new (require('uuid-logger'))();const formatter = (logEntry) => {
let timeStamp = Moment().format('YYYY-MM-DD HH:mm:ss.MS');
return timeStamp + ' - ' + logEntry.level + ': ' + _.get(logEntry, 'meta.message');
};
Logger.addTransport({
file: {
fileName: 'tempX.log',
filePath: '/tmp',
level: 'info',
colorize: false,
json: false,
zippedArchive: true,
maxDays: 15,
formatter: formatter
}
});module.exports = Logger.getLogger();
3. Add Slack Logger
// In logger.jsconst _ = require('lodash');
const Moment = require('moment');
const Logger = new (require('uuid-logger'))();const formatter = (logEntry) => {
let timeStamp = Moment().format('YYYY-MM-DD HH:mm:ss.MS');
return timeStamp + ' - ' + logEntry.level + ': ' + _.get(logEntry, 'meta.message');
};
Logger.addTransport({
slack: {
webHookUrl: "https://hooks.slack.com/services/XXXXXX/XXXXXX/XXXXXX",
channel: "#channelname",
username: "Bot",
level: 'info'
}
});module.exports = Logger.getLogger();
Open Source GitHub Repo Link
NPM Link