70 lines
2.1 KiB
TypeScript
70 lines
2.1 KiB
TypeScript
import fs from 'fs';
|
|
import moment from "moment";
|
|
|
|
|
|
const shortenStringsInObject = (obj, maxLength) => {
|
|
// Kiểm tra nếu obj không phải là một đối tượng hoặc maxLength không phải là một số
|
|
if (typeof obj !== 'object' || typeof maxLength !== 'number') {
|
|
return obj;
|
|
}
|
|
|
|
// Duyệt qua các thuộc tính của đối tượng
|
|
for (const key in obj) {
|
|
if (obj.hasOwnProperty(key)) {
|
|
// Kiểm tra nếu thuộc tính là một chuỗi và độ dài của chuỗi lớn hơn maxLength
|
|
if (typeof obj[key] === 'string' && obj[key].length > maxLength) {
|
|
// Rút ngắn chuỗi lại maxLength ký tự
|
|
obj[key] = obj[key].substring(0, maxLength);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
if (Array.isArray(obj) && obj.length > 10) {
|
|
// Rút ngắn chuỗi lại maxLength ký tự
|
|
obj = "[Array:"+obj.length+"]\n"+obj.slice(0,15)
|
|
}
|
|
|
|
return obj;
|
|
}
|
|
|
|
export function loggerAPI(req, res, location) {
|
|
let old_data = "";
|
|
let resBody = res.lazyBody[0]
|
|
let body = shortenStringsInObject(resBody, 300)
|
|
try {
|
|
const fileName =
|
|
"./app/store/logsAPI/" +
|
|
moment(Date.now()).format("DD_MM_YYYY").toString() +
|
|
".log";
|
|
|
|
let logInfo =
|
|
"\n\n[" +
|
|
moment(Date.now()).format("D/M/YY-HH:mm:ss") +
|
|
"] - " +
|
|
res.response.statusCode +
|
|
" - " +
|
|
location +
|
|
"\n------PAYLOAD------\n" +
|
|
JSON.stringify(req.all(), null, 2) +
|
|
"\n------PARAMS-------\n" +
|
|
JSON.stringify(req.params(), null, 2) +
|
|
"\n-----RESPONSE------\n" +
|
|
JSON.stringify(body, null, 2) +
|
|
"\n------HEADERS------\n" +
|
|
JSON.stringify(req.headers(), null, 2) +
|
|
"\n\n======================================================================";
|
|
|
|
fs.exists(fileName, async (exists) => {
|
|
if (exists) {
|
|
old_data = await fs.readFileSync(fileName, "utf8");
|
|
fs.writeFileSync(fileName, old_data + logInfo);
|
|
} else {
|
|
fs.writeFileSync(fileName, old_data + logInfo);
|
|
}
|
|
});
|
|
|
|
} catch (error) {
|
|
console.log(error)
|
|
}
|
|
} |