21 lines
627 B
TypeScript

import {IHandler} from './IHandler'
import {ILogger} from '../logger/ILogger'
import {IMiddleware} from './IMiddleware'
export class RequestLogger implements IMiddleware {
constructor(protected readonly logger: ILogger) {}
handle: IHandler = (req, res, next) => {
const start = Date.now()
res.on('finish', () => {
const { method, originalUrl } = req
const duration = Date.now() - start
this.logger.debug('%s %s %j', method, originalUrl, req.body)
const { statusCode } = res
this.logger.info('%s %s %d %sms',
method, originalUrl, statusCode, duration)
})
next()
}
}