@hoangnam.io/qa-tools
Version:
Logging, Error handling, Notifying for Express codebase
22 lines (19 loc) • 873 B
JavaScript
const morgan = require("morgan");
const { genLogFormatFunc } = require("./log-format");
const { getLogger } = require("./logger");
const { createLogMiddlewareSchema } = require("./schema");
function createLogMiddleware(app, options) {
const { appName, extractCallerFunc, sensitiveRoutes, TZ, ignoreRoutes, loggerOptions } =
createLogMiddlewareSchema.parse(options);
const logFormatFunction = genLogFormatFunc({ app, appName, extractCallerFunc, sensitiveRoutes, TZ });
const logger = getLogger(loggerOptions);
const logStream = { write: (logString) => logger.log(JSON.parse(logString)) };
return morgan(logFormatFunction, {
stream: logStream,
skip: (req) =>
ignoreRoutes.some(
({ method, route }) => req.method.toLowerCase() === method.toLowerCase() && req.url.includes(route)
),
});
}
module.exports = { createLogMiddleware };