From c212ed0ad6717917c03d7103366cc912a062ec9e Mon Sep 17 00:00:00 2001 From: Daseul Kim Date: Mon, 16 Jun 2025 16:03:38 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20api=20log=20wrapper=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/libs/api-wrapper.ts | 17 ++++++++++++++--- src/libs/logger.ts | 8 +++----- 2 files changed, 17 insertions(+), 8 deletions(-) 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') }