1.2.86 • Published 5 months ago

diatoz-log-monitor v1.2.86

Weekly downloads
-
License
MIT
Repository
-
Last release
5 months ago

diatoz-log-monitor

A library for logging and tracing a distributed request

This library depends on the following packages:

  • express-http-context used for storing the trace-id per request scope
  • axios used for making Http calls
  • log4js used for generating the logs appended with trace-id

Usage Steps

  1. npm i diatoz-log-monitor

  2. Provide the log4js configuration

First create a config folder in your working directory

vim config/index.js

const config = {
  logging: {
    appenders: { out: { type: "stdout", layout: { type: "basic" } } },
    categories: { default: { appenders: ["out"], level: "info" } },
  },
};

module.exports = config;
  1. Attach the middlewares with express app
const express = require("express");
const { httpContext, contextMiddleware } = require("diatoz-log-monitor");
const app = express();
// Use any third party middleware that does not need access to the context here, e.g.
// app.use(some3rdParty.middleware);
app.use(httpContext.middleware);
// all code from here on has access to the same context for each request
app.use(contextMiddleware);
  1. Now we can use the logger and restClient any where in the code
// import anywhere in the project
const {logger, restClient} = require('diatoz-log-monitor');

//it will forward the current request id to other service
function fetchUser(user_id) {
  //as we are using axios under the hood, we can use all available function provided by axios
  return await restClient.get(`url/${user_id}`,callback())
}
//it will log the current request trace id
function foo() {
  logger().info('first log');
}
  1. Adding user information to log
//import httpcontext from package where your authentication code reside in your applicaiton
const { httpContext, contextMiddleware } = require("diatoz-log-monitor");

// Example authorization middleware
app.use((req, res, next) => {
  userService.getUser(req.get("Authorization"), (err, result) => {
    if (err) {
      next(err);
    } else {
      //set user to context like this
      httpContext.set("userId", result.userId);
      next();
    }
  });
});

//User id will be added to logs

example logs:

[2019-10-18T19:49:11.980] [INFO] default - first log xRequestId: 5f884282-7d7f-4f8d-aa8b-64340fdbedfd [2019-10-18T19:51:21.924] [INFO] default - Request to Service:, body=> foo.com/user/1 xRequestId: 5f884282-7d7f-4f8d-aa8b-64340fdbedfd

1.2.86

5 months ago

1.2.8

2 years ago

1.2.7

2 years ago

1.2.81

2 years ago

1.2.82

2 years ago

1.2.85

2 years ago

1.2.83

2 years ago

1.2.84

2 years ago

1.2.6

3 years ago

1.2.5

3 years ago

1.2.4

3 years ago

1.1.1

3 years ago

1.2.3

3 years ago

1.1.4

3 years ago

1.2.2

3 years ago

1.1.3

3 years ago

1.2.1

3 years ago

1.1.2

3 years ago

1.0.0

3 years ago