Repository URL to install this package:
|
Version:
0.0.3 ▾
|
import { isFunction } from 'exotic'
import { Logger } from 'pino'
import { NextFunction, ExpressResponse, ExpressRequest } from './typings'
export type LogMiddlewareOptionsType = { logger: Logger }
export function logDecoratorMiddleware(options: LogMiddlewareOptionsType) {
const { logger } = options
return function (req: ExpressRequest, res: ExpressResponse, next?: NextFunction) {
function logFor(level: 'info' | 'debug' | 'error' | 'warn' | 'trace' | 'fatal') {
return (message?: string | any, ...args: any[]) => {
if (typeof message === 'string') {
logger.info(message, { meta: (req as any).meta }, ...args)
} else if (typeof message === 'object') {
logger.info({ meta: req.meta, ...message })
}
}
}
const log = {
info: logFor('info'),
debug: logFor('debug'),
error: logFor('error'),
warn: logFor('warn'),
trace: logFor('trace'),
fatal: logFor('fatal'),
}
req.log = log
if (isFunction(next) === true) {
next()
}
}
}