UNPKG

@lexamica-modules/logger

Version:

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

31 lines (30 loc) 1.22 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createLoggerMiddleware = void 0; const morgan_1 = __importDefault(require("morgan")); const environment_1 = require("./environment"); const formatting_1 = require("./formatting"); function createLoggerMiddleware({ logger, format, environment, }) { if (logger && !!logger.info) { return (0, morgan_1.default)((0, environment_1.isDevelopment)(environment) ? 'short' : format ?? formatting_1.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.'); } } exports.createLoggerMiddleware = createLoggerMiddleware;