add middleware writeLog

This commit is contained in:
joseph le 2023-09-29 10:50:16 +07:00
parent 9e5a7b1dd1
commit a90dfeee13
7 changed files with 119 additions and 76 deletions

14
app/Middleware/Logger.ts Normal file
View File

@ -0,0 +1,14 @@
import type { HttpContextContract } from "@ioc:Adonis/Core/HttpContext";
import { loggerAPI } from "App/utils/Logger";
export default class Logger {
public async handle(
{ request, response }: HttpContextContract,
next: () => Promise<void>
) {
// code for middleware goes here. ABOVE THE NEXT CALL
await next();
loggerAPI(request, response, request.url());
}
}

View File

@ -1,37 +0,0 @@
fdgdfg
fksdfk trace ak
Power Failure
ERROR: % Incomplete command
ERROR: % Incomplete command
sdfhskd ERROR PVDM3- invalid |IOSXE_RP_NV-3-NV_ACCESS_FAIL|IOSXE_RP_NV-3- shjkg
sdfhskd ERROR PVDM3- invalid |IOSXE_RP_NV-3-NV_ACCESS_FAIL|IOSXE_RP_NV-3- shjkg
invalid |IOSXE_RP_NV-3-NV_ACCESS_FAIL|IOSXE_RP_NV-3- shjkg
invalid |IOSXE_RP_NV-3-NV_ACCESS_FAIL|IOSXE_RP_NV-3- shjkg
invalid |IOSXE_RP_NV-3-NV_ACCESS_FAIL|IOSXE_RP_NV-3- shjkg
invalid |IOSXE_RP_NV-3-NV_ACCESS_FAIL|IOSXE_RP_NV-3- shjkg
sdfhskd ERROR PVDM3- invalid |IOSXE_RP_NV-3-NV_ACCESS_FAIL|IOSXE_RP_NV-3- shjkg
invalid |IOSXE_RP_NV-3-NV_ACCESS_FAIL|IOSXE_RP_NV-3- shjkg
invalid |IOSXE_RP_NV-3-NV_ACCESS_FAIL|IOSXE_RP_NV-3- shjkg
invalid |IOSXE_RP_NV-3-NV_ACCESS_FAIL|IOSXE_RP_NV-3- shjkg
invalid |IOSXE_RP_NV-3-NV_ACCESS_FAIL|IOSXE_RP_NV-3- shjkg
invalid |IOSXE_RP_NV-3-NV_ACCESS_FAIL|IOSXE_RP_NV-3- shj
invalid |IOSXE_RP_NV-3-NV_ACCESS_FAIL|IOSXE_RP_NV-3- shj
invalid |IOSXE_RP_NV-3-NV_ACCESS_FAIL|IOSXE_RP_NV-3- shj pak_debug_init sdh
abc
123 PVDM3- hui 800G2-POE-2
anfasll ak shflks as klhfalk la EHWIC- fsjklfjkl
anfasll ak shflks as klhfalk la EHWIC- fsjklfjkl
anfasll ak shflks as klhfalk la EHWIC- fsjklfjkl
123 PVDM3- hui 800G2-POE-2
123 PVDM3- hui 800G2-POE-2
dfgkfdjkhlfdhkhjjkhjgf
sdfsd DM3- hui 800G2-POE-
123 PVDM3- hui 800G2-POE-2
800G2-POE-2
anfasll ak shflks as klhfalk la EHWIC- fsjklfjkl
800G2-POE-2
anfasll ak shflks as klhfalk la EHWIC- fsjklfjkl
800G2-POE-2
anfasll ak shflks as klhfalk la EHWIC- fsjklfjkl
800G2-POE-2
800G2-POE-2

View File

@ -1,7 +0,0 @@
adfasf
anfasll ak shflks as klhfalk la EHWIC- fsjl
123 PVDM3- hui 800G2-POE-2
sdhgksd sjk hk error
abc 123 fail
abc 123 fail
sdhgksd sjk hk error

View File

@ -1,8 +0,0 @@
adfasf
anfasll ak shflks as klhfalk la EHWIC- fsjl
123 PVDM3- hui 800G2-POE-2
sdhgksd sjk hk error
abc 123 fail
abc 123 fail
sdhgksd sjk hk error
123 PVDM3- hui 800G2-POE-2

59
app/utils/Logger.ts Normal file
View File

@ -0,0 +1,59 @@
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);
}
}
}
return obj;
}
export function loggerAPI(request, response, location) {
let old_data = "";
let body = shortenStringsInObject(response.getBody(), 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") +
"] - " +
response.getStatus() +
" - " +
location +
"\n------------PAYLOAD-----------\n" +
JSON.stringify(request.all()) +
"\n--------------DATA-------------\n" +
JSON.stringify(body) +
"\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) {
response.status(500).send("CAN'T WRITE LOG");
}
}

View File

@ -41,4 +41,5 @@ Server.middleware.register([
*/ */
Server.middleware.registerNamed({ Server.middleware.registerNamed({
checkToken: () => import('App/Middleware/CheckToken'), checkToken: () => import('App/Middleware/CheckToken'),
writeLog: () => import('App/Middleware/Logger')
}) })

View File

@ -198,29 +198,32 @@ runtimeCheckLogs(Env.get("FOLDER_LOGS"));
// }, 2000); // }, 2000);
//ERP get index serial number //ERP get index serial number
Route.post( Route.post(
"/api/getIndexSerialNumber", "/api/getIndexSerialNumber",
"ErpsController.getIndexSerialNumber" "ErpsController.getIndexSerialNumber"
).middleware("checkToken"); ).middleware("checkToken").middleware("writeLog");
Route.post("/api/getParagraph", "ErpsController.getParagraph").middleware( Route.post("/api/getParagraph", "ErpsController.getParagraph").middleware(
"checkToken" "checkToken"
); ).middleware("writeLog");
//Users //Users
Route.post("/api/account/createUser", "UsersController.create"); Route.post("/api/account/createUser", "UsersController.create").middleware("writeLog");
Route.post("/api/account/checkLogin", "UsersController.checkLogin");
Route.post("/api/account/checkLogin", "UsersController.checkLogin").middleware("writeLog");
//Log //Log
Route.get("/api/log/showLog/:name?", "LogsController.showLog"); Route.get("/api/log/showLog/:name?", "LogsController.showLog").middleware("writeLog");
Route.get("/api/getAllLogDetect", "LogsController.getAllLogDetect"); Route.get("/api/getAllLogDetect", "LogsController.getAllLogDetect").middleware("writeLog");
//Key-Value //Key-Value
Route.post("/api/getKeyValue", "ValuesController.getKeyValue"); Route.post("/api/getKeyValue", "ValuesController.getKeyValue").middleware("writeLog");
Route.post("/api/deleteValue", "ValuesController.destroy"); Route.post("/api/deleteValue", "ValuesController.destroy").middleware("writeLog");
Route.post("/api/addValue", "ValuesController.create"); Route.post("/api/addValue", "ValuesController.create").middleware("writeLog");
Route.post("/api/backupProduct", async ({ request, response }) => { Route.post("/api/backupProduct", async ({ request, response }) => {
try { try {
@ -228,25 +231,43 @@ Route.post("/api/backupProduct", async ({ request, response }) => {
const res = await axios.post( const res = await axios.post(
"https://logs.danielvu.com/api/getIndexSerialNumber", "https://logs.danielvu.com/api/getIndexSerialNumber",
{ from: date, to: date }, { from: date, to: date },
{ headers: { Authorization: request.headers().authorization?.replace(/"/g, "") } } {
headers: {
Authorization: request.headers().authorization?.replace(/"/g, ""),
},
}
); );
res.data.map((obj, index)=>{ res.data.map((obj, index) => {
res.data[index] = { res.data[index] = {
PID:res.data[index].PID, PID: res.data[index].PID,
SN:res.data[index].SN, SN: res.data[index].SN,
VID:res.data[index].VID, VID: res.data[index].VID,
line:res.data[index].line.join(","), line: res.data[index].line.join(","),
file:res.data[index].fileName, file: res.data[index].fileName,
warehouse:res.data[index].warehouse warehouse: res.data[index].warehouse,
} };
}) });
const addProduct = await Product.createMany(res.data) const addProduct = await Product.createMany(res.data);
// console.log(addProduct) // console.log(addProduct)
response.status(200).send("Add "+res.data.length+" success!"); response.status(200).send("Add " + res.data.length + " success!");
await sendMessToZulip("stream", "networkToolBot", "Log service", "Backup product "+date+" success with "+res.data.length+" products") await sendMessToZulip(
"stream",
"networkToolBot",
"Log service",
"Backup product " +
date +
" success with " +
res.data.length +
" products"
);
} catch (error) { } catch (error) {
response.status(500).send(error); response.status(500).send(error);
await sendMessToZulip("stream", "networkToolBot", "Log service", "Backup product fail. Please check!") await sendMessToZulip(
"stream",
"networkToolBot",
"Log service",
"Backup product fail. Please check!"
);
} }
}); }).middleware("writeLog");