Files
jlinc-server/backend/http/logging.js
2026-08-20 15:08:32 +00:00

40 lines
1.3 KiB
JavaScript

import { getConfig } from "../common/config.js";
export function logRequest(app) {
const config = getConfig();
app.use((req, res, next) => {
const originalSend = res.send;
res.send = function (body) {
res.body = body; // Store the response body for logging
try {
return originalSend.apply(res, arguments); // Proceed with sending the response
} catch(e) {
console.error(e)
}
};
res.on("finish", () => {
let output = `${req.method} - ${res.statusCode} - ${req.url}`;
if (req.apiMessage) {
output += ` - ${req.apiMessage}`;
delete req.apiMessage;
}
console.log(output);
if (res.statusCode != 200 || config.debug) {
let body;
try {
body = JSON.parse(res.body);
} catch (e) {
body = {};
}
if (body?.error) {
console.log(`${req.method} - ${res.statusCode} - ${req.url} - ERROR: ${body.error}`);
return;
}
if (config.debug) {
console.log(JSON.stringify(body, null, 2));
}
}
});
next();
});
}