@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
JavaScript
;
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;