diff --git a/src/libs/api-wrapper.ts b/src/libs/api-wrapper.ts index ba52d52..4caad47 100644 --- a/src/libs/api-wrapper.ts +++ b/src/libs/api-wrapper.ts @@ -2,9 +2,20 @@ import { NextRequest, NextResponse } from 'next/server' import { writeApiLog } from './logger' export function loggerWrapper(handler: (req: NextRequest) => Promise): (req: NextRequest) => Promise { - return async function (request: NextRequest) { - const response = await handler(request) - await writeApiLog(request, response.status) + return async function (req: NextRequest) { + const reqClone = req.clone() + + const response = await handler(req) + + await writeApiLog( + new NextRequest(req.url, { + method: req.method, + headers: req.headers, + body: reqClone.body ? await reqClone.text() : undefined, + }), + response.status, + ) + return response } } diff --git a/src/libs/logger.ts b/src/libs/logger.ts index 2b1aa9e..d75083d 100644 --- a/src/libs/logger.ts +++ b/src/libs/logger.ts @@ -4,8 +4,7 @@ import pino from 'pino' /* 로그 데이터 인터페이스 */ interface ApiLogData { - timestamp: string - status: number + responseStatus: number method: string url: string // headers: { [k: string]: string } @@ -82,13 +81,12 @@ const dailyLogger = new DailyLogger() /* API 로그 기록 함수 */ export const writeApiLog = async (request: NextRequest, responseStatus: number): Promise => { const logData: ApiLogData = { - timestamp: new Date().toISOString(), - status: responseStatus, + responseStatus: responseStatus, method: request.method, url: request.url, // headers: Object.fromEntries(request.headers), query: Object.fromEntries(new URL(request.url).searchParams), - body: request.body ? await request.clone().text() : undefined, + body: request.body ? await request.text() : undefined, } dailyLogger.info(logData, 'API Request') }