acuminous/tripitaka

View on GitHub
examples/express/middleware/log-request.js

Summary

Maintainability
A
0 mins
Test Coverage
const LoggerFactory = require('../LoggerFactory');

module.exports = (req, res, next) => {
  const request = {
    method: req.method,
    url: req.originalUrl,
    route: req.route.path,
    params: req.params,
    start: Date.now(),
  };

  res.once('finish', function onFinish() {
    request.duration = Date.now() - request.start;
    /* eslint-disable-next-line no-invalid-this */
    request.status = this.statusCode;

    const logger = LoggerFactory.getInstance();
    if (request.status < 400) {
      logger.info(`${request.method} ${request.url} ${request.status}`, {
        request,
      });
    } else {
      logger.error(`${request.method} ${request.url} ${request.status}`, {
        request,
      });
    }
  });

  next();
};