UNPKG

openapi-connect

Version:
80 lines 2.72 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.errorLogging = exports.requestLogging = exports.defaultOptions = void 0; const expressWinston = require("express-winston"); const loggerism_1 = require("loggerism"); const requestWhitelist = ['url', 'headers', 'method', 'httpVersion', 'originalUrl', 'query', 'body']; const headersBlacklist = ['authorization', 'cookie']; const environment = (typeof process !== 'undefined' && process.env.NODE_ENV && process.env.NODE_ENV.trim()) || 'development'; const isDevelopment = environment === 'development'; exports.defaultOptions = { meta: true, colorize: isDevelopment, requestWhitelist, requestWhiteList: requestWhitelist, headersBlacklist, ignoreRoute: () => false, exceptionToMeta: loggerism_1.dumpError }; Object.freeze(exports.defaultOptions); const requestFilter = (ops) => (req, propName) => { switch (propName) { case 'headers': if (ops.headersBlacklist.some(x => !!req.headers[x])) { const headers = { ...req.headers }; ops.headersBlacklist.forEach(x => { delete headers[x]; }); return headers; } else { return req.headers; } default: return req[propName]; } }; const wrapLogger = (logger) => { return { log: (...args) => { if (args.length === 1) { const { level, message, meta } = args[0]; logger[level](message, meta); } else { logger[args[0]](args[1], args[2]); } } }; }; function requestLogging(logger, options = exports.defaultOptions) { return expressWinston.logger({ winstonInstance: wrapLogger(logger), expressFormat: true, level: levelFromStatus, requestFilter: isDevelopment ? null : requestFilter(options), ...options, requestWhitelist: options.requestWhitelist || options.requestWhiteList }); } exports.requestLogging = requestLogging; function errorLogging(logger, options = exports.defaultOptions) { return expressWinston.errorLogger({ winstonInstance: wrapLogger(logger), level: levelFromStatus, msg: '{{req.method}} {{req.url}} ', requestFilter: isDevelopment ? null : requestFilter(options), ...options }); } exports.errorLogging = errorLogging; const levelFromStatus = (req, res, error) => { if (res.statusCode >= 500) { return 'error'; } if (res.statusCode >= 400) { return 'warn'; } return 'info'; }; //# sourceMappingURL=logging.js.map