@fran-834/gs-microservice-core
Version:
Core package for Node.js microservices by Galduria Software. Includes security, logging, validation, and error handling middlewares.
34 lines (33 loc) • 1.08 kB
JavaScript
import morgan from "morgan";
import logger from "./logger.js";
/**
* Morgan token to get the request ID.
* Returns the request ID if it exists.
*/
morgan.token("id", function getId(req) {
return req.id;
});
/**
* Express middleware for HTTP logging with Morgan and Winston.
* Logs request details in JSON format.
*/
const morganMiddleware = morgan(function (tokens, req, res) {
return JSON.stringify({
id: tokens.id(req, res),
remote_address: tokens["remote-addr"](req, res),
method: tokens.method(req, res),
url: tokens.url(req, res),
status: Number.parseFloat(tokens.status(req, res) ?? "0"),
content_length: tokens.res(req, res, "content-length"),
response_time: Number.parseFloat(tokens["response-time"](req, res) ?? "0"),
});
}, {
stream: {
// Configure Morgan to use our custom logger with the http severity
write: (message) => {
const data = JSON.parse(message);
logger.info(`incoming-request`, data);
},
},
});
export default morganMiddleware;