diff --git a/src/database/data-source.ts b/src/database/data-source.ts index 1eee170..8411800 100644 --- a/src/database/data-source.ts +++ b/src/database/data-source.ts @@ -4,18 +4,29 @@ import { DataSource, LogLevel, LogMessage } from "typeorm"; import { Logger } from "typeorm"; import { QueryRunner } from "typeorm/browser"; import { RequestWithUser } from "../middlewares/user"; +import { addLogSequence } from "../interfaces/utils"; export class MyCustomLogger implements Logger { log(level: "log" | "info" | "warn", message: any, queryRunner?: QueryRunner) {} logQuery(query: string, parameters?: any[], queryRunner?: QueryRunner): void { - const req = queryRunner?.data as RequestWithUser | undefined; - const logData = req?.app?.locals.logData?.sequence?.at(-1); + const req = queryRunner?.data as RequestWithUser; + if (req?.app?.locals.logData?.sequence) { + addLogSequence(req, { + action: "database", + status: "success", + description: "Query Data.", + query: "Query: " + query + (parameters ? " - Parameters:" + JSON.stringify(parameters) : ""), + }); + } + + // const req = queryRunner?.data as RequestWithUser | undefined; + // const logData = req?.app?.locals.logData?.sequence?.at(-1); - if (logData && !logData.query) logData.query = []; - if (logData) logData.query.push( - "Query: " + query + (parameters ? (" - Parameters:" + JSON.stringify(parameters)) : '') - ); + // if (logData && !logData.query) logData.query = []; + // if (logData) logData.query.push( + // "Query: " + query + (parameters ? (" - Parameters:" + JSON.stringify(parameters)) : '') + // ); } logMigration(message: string, queryRunner?: QueryRunner) {} diff --git a/src/interfaces/http-success.ts b/src/interfaces/http-success.ts index 97f1bad..3d931f6 100644 --- a/src/interfaces/http-success.ts +++ b/src/interfaces/http-success.ts @@ -16,15 +16,4 @@ class HttpSuccess { this.result = result; } } -// const request = {} as RequestWithUser; -// if (request) { -// if (!request.app.locals.logData) { -// request.app.locals.logData = {}; -// } -// addLogSequence(request, { -// action: "database", -// status: "success", -// description: "Query Data.", -// }); -// } export default HttpSuccess; diff --git a/src/interfaces/utils.ts b/src/interfaces/utils.ts index f21a398..ce18535 100644 --- a/src/interfaces/utils.ts +++ b/src/interfaces/utils.ts @@ -26,7 +26,7 @@ export function setLogDataDiff(req: RequestWithUser, data: DataDiff) { } export function addLogSequence(req: RequestWithUser, data: LogSequence) { - if (!req.app.locals.logData.sequence) { + if (!req?.app?.locals?.logData?.sequence) { req.app.locals.logData.sequence = []; } req.app.locals.logData.sequence = req.app.locals.logData.sequence.concat(data); diff --git a/src/middlewares/logs.ts b/src/middlewares/logs.ts index 43c7f43..e5acc5b 100644 --- a/src/middlewares/logs.ts +++ b/src/middlewares/logs.ts @@ -1,7 +1,5 @@ import { NextFunction, Request, Response } from "express"; import { Client } from "@elastic/elasticsearch"; -import { addLogSequence } from "../interfaces/utils"; -import { RequestWithUser } from "./user"; if (!process.env.ELASTICSEARCH_INDEX) { throw new Error("Require ELASTICSEARCH_INDEX to store log."); @@ -21,7 +19,7 @@ const elasticsearch = new Client({ node: `${process.env.ELASTICSEARCH_PROTOCOL}://${process.env.ELASTICSEARCH_HOST}:${process.env.ELASTICSEARCH_PORT}`, }); -async function logMiddleware(req: any, res: Response, next: NextFunction) { +async function logMiddleware(req: Request, res: Response, next: NextFunction) { if (!req.url.startsWith("/api/")) return next(); let data: any; @@ -40,13 +38,8 @@ async function logMiddleware(req: any, res: Response, next: NextFunction) { res.on("finish", () => { if (!req.url.startsWith("/api/")) return; - const logData = req?.app?.locals.logData?.sequence?.at(-1); + const level = LOG_LEVEL_MAP[process.env.LOG_LEVEL ?? "debug"] || 4; - addLogSequence(req, { - action: "database", - status: "success", - description: "Query Data.", - }); if (level === 1 && res.statusCode < 500) return; if (level === 2 && res.statusCode < 400) return; @@ -74,6 +67,7 @@ async function logMiddleware(req: any, res: Response, next: NextFunction) { document: obj, }); }); + return next(); }