UNPKG

@lexamica-modules/logger

Version:

The various loggers and transports used for API logging in the Lexamica Eco-system

37 lines (35 loc) 901 B
import morgan from 'morgan'; import { isDevelopment } from './environment'; import { requestFormatter } from './formatting'; import winston from 'winston'; export function createLoggerMiddleware({ logger, format, environment, }: { logger: winston.Logger; format: string; environment: string; }) { if (logger && !!logger.info) { return morgan( isDevelopment(environment) ? 'short' : format ?? requestFormatter, { stream: { write: (message) => { try { const data = JSON.parse(message); logger.http(data); } catch (err) { logger.info(message); } }, }, } ); } else { throw new Error( 'You must pass in a winston logger instance (as a named argument, logger) to create logging middleware.' ); } }