Skip to content

Express-route-exit-log (EREL) is an customisable express middleware package to log useful request insights when route execution finishes

License

Notifications You must be signed in to change notification settings

bhumijgupta/erel

Repository files navigation

EREL

NPM Publish npm npm bundle size NPM GitHub stars
Express-route-exit-log (EREL) is a customisable express middleware package to log useful request insights when route execution finishes.

Features

  • Written in TypeScript
  • Included types for intellisense in IDE
  • Supports both CJS and ESM modules
  • Small package and easy to set up
  • Support for custom logging solution
  • Provides route insights like IP address, status code, execution time. etc

Install

# NPM
npm i erel --save

# Yarn
yarn add erel

Screenshot

Logging route insights using custom logger and EREL
Demo screenshot

Usage

  1. For JavaScript
const express = require('express');
const app = express();

// Import exitLog from erel
const { exitLog } = require('erel');

// Use your custom logging solution (optional but preferred)
const customLogger = (data, req, res) => {
  Logger.info(
    `${data.timestamp} - ${data.ip} - ${data.method} - ${data.route} - ${data.statusCode} - ${data.responseTime}`,
  );
};
exitLog.setLogger(customLogger);

// Configure express app to use the middleware
app.use(exitLog.middleware);
  1. For TypeScript
import * as express from 'express';
const app = express();

// import exitLog and LoggerCallback from erel
import { exitLog, LoggerCallback } from 'erel';

// Use your custom logging solution (optional but preferred)
const customLogger: LoggerCallback = (data, req, res) => {
  Logger.info(
    `${data.timestamp} - ${data.ip} - ${data.method} - ${data.route} - ${data.statusCode} - ${data.responseTime}`,
  );
};
exitLog.setLogger(customLogger);

// Configure express app to use the middleware
app.use(exitLog.middleware);

API Reference

exitLog

  • exitLog.setLogger

setLogger method can be used to set your custom Logging function which will be called along with the request insights. It accepts a logger function as argument which implements the LoggerCallback interface. See LoggerCallback for more details.

// Example

import { exitLog } from 'erel';
// req and res is also passed to log custom objects, like req.userId
exitLog.setLogger((data, req, res) => {
  Logger.log(`${data.timestamp} - ${req.userId} - ${data.ip} - ${data.statusCode}`);
});
  • exitLog.middleware

middleware is the inbuilt middleware function to be configured with express to use. This middleware will call the custom Logger function (if set using exitLog.setLogger), otherwise the default Logger.

// Example
import * as express from 'express';
import { exitLog } from 'erel';
const app = express();
app.use(exitLog.middleware);

LoggerCallback

LoggerCallback is an interface for the custom logger function to be used.

type LoggerCallback = (data: exitData, req?: Request, res?: Response) => void;
// data -> request insights
// req -> express request object
// res -> express response object

data contains the following properties

Property Type Description
rawEnterDate Date Date when request entered the route
rawExitDate Date Date when request finished route execution
timestamp string Timestamp when route finished execution
statusCode number Response status code
route string Route accessed
ip string | undefined IP address of the request
responseTime number Time taken in millisecond to finish route execution
method string Request method to access the endpoint

Need more insights?

Consider opening a feature request here.

License

NPM

Build with ♡ by

Bhumij Gupta

Bhumij profile picture

GitHub followers LinkedIn Twitter Follow


if (repo.isAwesome || repo.isHelpful) {
  StarRepo();
}