UNPKG

chroma-log

Version:

A Colourful and minimal HTTP request logging middleware for node.js

42 lines (33 loc) 1.27 kB
const chalk = require('chalk'); const getDurationInMilliseconds = (start) => { const NS_PER_SEC = 1e9; const NS_TO_MS = 1e6; const diff = process.hrtime(start); return (diff[0] * NS_PER_SEC + diff[1]) / NS_TO_MS; }; function logPose(req, res, next) { const start = process.hrtime(); function GetColour(code) { if (code >= 200 && code < 300) { return chalk.greenBright.underline(code); } if (code >= 300 && code < 400) { return chalk.blueBright.underline(code); } if (code >= 400 && code < 500) { return chalk.yellowBright.underline(code); } if (code >= 500) { return chalk.redBright.underline(code); } } const { url } = req; res.on('finish', () => { const responseCode = res.statusCode; GetColour(responseCode); // eslint-disable-next-line no-console console.log(`${chalk.magentaBright(req.method)}: ${chalk.whiteBright('')}${GetColour(responseCode)}${chalk.whiteBright('')} ${chalk.cyanBright('->')}${chalk.redBright(' [ ')}${chalk.underline.whiteBright(url)}${chalk.redBright(' ]')} ${chalk.cyanBright('-> ')}${getDurationInMilliseconds(start).toLocaleString()}ms${chalk.cyanBright('')}`); }); next(); } module.exports = logPose;