Express-route-exit-log (EREL) is a customisable express middleware package to log useful request insights when route execution finishes.
- 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
# NPM
npm i erel --save
# Yarn
yarn add erel
Logging route insights using custom logger and EREL
- 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);
- 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);
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}`);
});
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
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 |
Consider opening a feature request here.
if (repo.isAwesome || repo.isHelpful) {
StarRepo();
}