kodex-music-catalog/logger.js
2023-10-01 22:31:26 +03:00

40 lines
1.2 KiB
JavaScript

const config = require("./config-handler");
const fs = require("fs");
function log(date, req, ip, res) {
const requestBody = !req.byteBody.toString("utf-8")
? ""
: `
~~~~~~~~~~~~~~
[REQUEST BODY]
~~~~~~~~~~~~~~
${req.byteBody.toString("utf-8")}`;
let action = `HTTP ${req.httpVersion} ${req.method} ${req.originalUrl}
~~~~~~~~~
[HEADERS]
~~~~~~~~~
${Object.entries(req.headers)
.map(([header, value]) => header + ": " + value)
.join("\n")}${requestBody}`;
let response = !res.isError
? ""
: `\n----------------\nError raised:\n----------------\n${JSON.stringify(
res.responseData,
)}`;
//console.log(`================================\nREPORT\n================================\n\nIP: ${ip}\n----------------\nACTION:\n----------------\n${action}${response}`);
let loggerFolder = config().logger_folder;
loggerFolder = !["/", "\\"].includes(loggerFolder.at(-1))
? loggerFolder + "/"
: loggerFolder;
fs.writeFileSync(
`${loggerFolder}${date.getTime()}.log`,
`================================\nREPORT\n================================\n\nIP: ${ip}\n----------------\nACTION:\n----------------\n${action}${response}`,
);
}
module.exports = async (req, res, next) => {
// console.log('ip', req.ip);
log(new Date(), req, req.ip, res);
next();
};