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