From 47cb243ff4d4675d1984fa21bf2f6a0b808e26f3 Mon Sep 17 00:00:00 2001 From: curry772 Date: Thu, 9 Jul 2026 16:25:19 +0900 Subject: [PATCH] =?UTF-8?q?REST=20Header=20=EB=A1=9C=EA=B7=B8=EC=97=90=20?= =?UTF-8?q?=EC=86=A1=EC=8B=A0=20Body=20=EC=B6=9C=EB=A0=A5=ED=95=A0=20?= =?UTF-8?q?=EC=88=98=20=EC=9E=88=EB=8A=94=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DJBApiAdapterController.java | 10 +++++++ .../HttpResponseLoggingInterceptor.java | 28 ++++++++++++------- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/eactive/eai/adapter/controller/DJBApiAdapterController.java b/src/main/java/com/eactive/eai/adapter/controller/DJBApiAdapterController.java index 87cb7d6..9752629 100644 --- a/src/main/java/com/eactive/eai/adapter/controller/DJBApiAdapterController.java +++ b/src/main/java/com/eactive/eai/adapter/controller/DJBApiAdapterController.java @@ -33,9 +33,11 @@ import com.eactive.eai.common.TransactionContextKeys; import com.eactive.eai.common.exception.ExceptionUtil; import com.eactive.eai.common.server.EAIServerManager; import com.eactive.eai.common.util.DatetimeUtil; +import com.eactive.eai.common.util.HttpAdapterExtraLogUtil; import com.eactive.eai.common.util.InboundErrorLogger; import com.eactive.eai.common.util.Logger; import com.eactive.eai.common.util.MessageUtil; +import com.eactive.eai.common.util.RestSendBodyLogUtils; import com.eactive.eai.common.util.TxFileLogger; import com.eactive.eai.common.util.TxSiftContext; import com.eactive.eai.common.util.UUIDGenerator; @@ -169,6 +171,14 @@ public class DJBApiAdapterController implements HttpAdapterServiceKey { responseData = responseErrorMsg; } finally { + + // 어댑터 HTTP 로그에 응답 body 출력 + if (RestSendBodyLogUtils.isBodyLoggingApi(transactionProp.getProperty("API_SERVICE_CODE"))) { + String trimmedBody = RestSendBodyLogUtils.getBodyByMaxSize(responseData); + transactionProp.setProperty(HttpAdapterExtraLogUtil.BODY_FIELD_NAME, trimmedBody); + } + servletRequest.setAttribute(TransactionContextKeys.TRANSACTION_PROP, transactionProp); + /** * 로깅 인터셉터에 데이터를 전달하기 위한 처리 이미 거래처리가 끝나서 영향도가 없을만한 servletRequest에 Attribute로 전달 * 추후 더 좋은방법이 생길경우 개선 요망 diff --git a/src/main/java/com/eactive/eai/adapter/interceptor/HttpResponseLoggingInterceptor.java b/src/main/java/com/eactive/eai/adapter/interceptor/HttpResponseLoggingInterceptor.java index 19c061f..968f7b5 100644 --- a/src/main/java/com/eactive/eai/adapter/interceptor/HttpResponseLoggingInterceptor.java +++ b/src/main/java/com/eactive/eai/adapter/interceptor/HttpResponseLoggingInterceptor.java @@ -1,19 +1,22 @@ package com.eactive.eai.adapter.interceptor; -import com.eactive.eai.adapter.http.client.HttpClientAdapterServiceKey; -import com.eactive.eai.adapter.http.dynamic.HttpAdapterServiceKey; -import com.eactive.eai.common.TransactionContextKeys; -import com.eactive.eai.common.util.HttpAdapterExtraLogUtil; -import com.eactive.eai.common.util.Logger; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Properties; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang.StringUtils; import org.springframework.web.servlet.HandlerInterceptor; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.util.HashMap; -import java.util.Map; -import java.util.Properties; +import com.eactive.eai.adapter.http.client.HttpClientAdapterServiceKey; +import com.eactive.eai.adapter.http.dynamic.HttpAdapterServiceKey; +import com.eactive.eai.common.TransactionContextKeys; +import com.eactive.eai.common.logger.HttpAdapterExtraHeaderVo; +import com.eactive.eai.common.util.HttpAdapterExtraLogUtil; +import com.eactive.eai.common.util.Logger; public class HttpResponseLoggingInterceptor implements HandlerInterceptor { @@ -55,6 +58,11 @@ public class HttpResponseLoggingInterceptor implements HandlerInterceptor { logger.debug(String.format( "httpHeader logging Interceptor headerKey=%s, headerValue=%s", headerName, headerValue)); headerMap.put(headerName, headerValue); } + + String body = transactionProp.getProperty(HttpAdapterExtraLogUtil.BODY_FIELD_NAME); + if (StringUtils.isNotEmpty(body)) { + headerMap.put(HttpAdapterExtraLogUtil.BODY_FIELD_NAME, body); + } int httpStatusCode = response.getStatus(); HttpAdapterExtraLogUtil.insertHttpAdapterExtraLog(uuid, 400, adapterGroupName, adapterName, headerMap, url, method, httpStatusCode);