Line data Source code
1 : // @ts-check 2 : const 3 1 : _ = require('lodash'), 4 1 : morgan = require('morgan'), 5 1 : debug = require('debug')('http'); 6 : 7 : /** 8 : * @typedef {import('express').IRouter} IRouter 9 : */ 10 : 11 1 : const stream = { 12 0 : write: (/** @type {string} */ message) => debug(_.trim(message)) 13 : }; 14 : 15 1 : module.exports = { 16 : /** 17 : * @param {IRouter} app 18 : */ 19 : register(app) { 20 1 : if (debug.enabled) { 21 0 : debug('http logger enabled'); 22 0 : app.use(morgan( 23 : /* eslint-disable-next-line max-len */ 24 : ':method :url :status :response-time ms - :res[content-length] bytes', 25 0 : { stream, skip: (req) => _.endsWith(req.path, '.websocket') })); 26 : 27 0 : app.use(morgan('WS :url', 28 : { stream, immediate: true, 29 0 : skip: (req) => !_.endsWith(req.path, '.websocket') })); 30 : } 31 : } 32 : };