40 lines
1.2 KiB
JavaScript
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();
|
|
}; |