fix: api log wrapper 수정
This commit is contained in:
parent
ed8c6187d3
commit
c212ed0ad6
@ -2,9 +2,20 @@ import { NextRequest, NextResponse } from 'next/server'
|
|||||||
import { writeApiLog } from './logger'
|
import { writeApiLog } from './logger'
|
||||||
|
|
||||||
export function loggerWrapper(handler: (req: NextRequest) => Promise<NextResponse>): (req: NextRequest) => Promise<NextResponse> {
|
export function loggerWrapper(handler: (req: NextRequest) => Promise<NextResponse>): (req: NextRequest) => Promise<NextResponse> {
|
||||||
return async function (request: NextRequest) {
|
return async function (req: NextRequest) {
|
||||||
const response = await handler(request)
|
const reqClone = req.clone()
|
||||||
await writeApiLog(request, response.status)
|
|
||||||
|
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
|
return response
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,8 +4,7 @@ import pino from 'pino'
|
|||||||
|
|
||||||
/* 로그 데이터 인터페이스 */
|
/* 로그 데이터 인터페이스 */
|
||||||
interface ApiLogData {
|
interface ApiLogData {
|
||||||
timestamp: string
|
responseStatus: number
|
||||||
status: number
|
|
||||||
method: string
|
method: string
|
||||||
url: string
|
url: string
|
||||||
// headers: { [k: string]: string }
|
// headers: { [k: string]: string }
|
||||||
@ -82,13 +81,12 @@ const dailyLogger = new DailyLogger()
|
|||||||
/* API 로그 기록 함수 */
|
/* API 로그 기록 함수 */
|
||||||
export const writeApiLog = async (request: NextRequest, responseStatus: number): Promise<void> => {
|
export const writeApiLog = async (request: NextRequest, responseStatus: number): Promise<void> => {
|
||||||
const logData: ApiLogData = {
|
const logData: ApiLogData = {
|
||||||
timestamp: new Date().toISOString(),
|
responseStatus: responseStatus,
|
||||||
status: responseStatus,
|
|
||||||
method: request.method,
|
method: request.method,
|
||||||
url: request.url,
|
url: request.url,
|
||||||
// headers: Object.fromEntries(request.headers),
|
// headers: Object.fromEntries(request.headers),
|
||||||
query: Object.fromEntries(new URL(request.url).searchParams),
|
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')
|
dailyLogger.info(logData, 'API Request')
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user