Log_service/app/utils/Logger.ts

70 lines
2.2 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.getBody()
// 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.getStatus() +
" - " +
location +
"\n------PAYLOAD------\n" +
JSON.stringify(req.all(), null, 2) +
"\n------PARAMS-------\n" +
JSON.stringify(req.params(), null, 2) +
"\n-----RESPONSE------\n" +
JSON.stringify(resBody, 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) {
res.status(500).send("CAN'T WRITE LOG");
}
}