Request based log tracking in Node JS

Yogesh Yadav
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

  1. Adds Unique Identifier to logs.
  2. 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

  1. 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

--

--