Negligent Pachinko Machine

    diatoz-log-monitor

    1.2.6 • Public • Published

    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

    Install

    npm i diatoz-log-monitor

    DownloadsWeekly Downloads

    2

    Version

    1.2.6

    License

    MIT

    Unpacked Size

    11.2 kB

    Total Files

    10

    Last publish

    Collaborators

    • diatoz