From 34d575443cb7edbcaa5c1484d1b1cc38ded4ac66 Mon Sep 17 00:00:00 2001 From: cho Date: Mon, 2 Feb 2026 11:40:42 +0900 Subject: [PATCH] =?UTF-8?q?Rest=EC=9D=BC=EB=96=84=20400=20http=ED=97=A4?= =?UTF-8?q?=EB=8D=94=20=EB=A1=9C=EA=B9=85=20=EC=B6=94=EA=B0=80,=20?= =?UTF-8?q?=EB=B0=8F=20interceptor=20=EB=8F=99=EC=9E=91=ED=95=98=EB=8A=94?= =?UTF-8?q?=EC=A7=80=20=ED=99=95=EC=9D=B8=20=EB=A1=9C=EA=B7=B8=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/ApiAdapterController.java | 20 ++++++++++++++++++- .../HttpResponseLoggingInterceptor.java | 9 ++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/eactive/eai/adapter/controller/ApiAdapterController.java b/src/main/java/com/eactive/eai/adapter/controller/ApiAdapterController.java index f61d6ff..cf86192 100644 --- a/src/main/java/com/eactive/eai/adapter/controller/ApiAdapterController.java +++ b/src/main/java/com/eactive/eai/adapter/controller/ApiAdapterController.java @@ -20,6 +20,7 @@ import com.eactive.eai.adapter.AdapterManager; import com.eactive.eai.adapter.AdapterPropManager; import com.eactive.eai.adapter.AdapterVO; import com.eactive.eai.adapter.http.HttpStatusException; +import com.eactive.eai.adapter.http.client.HttpClientAdapterServiceKey; import com.eactive.eai.adapter.http.dynamic.HttpAdapterServiceKey; import com.eactive.eai.adapter.http.dynamic.HttpDynamicInAdapterManager; import com.eactive.eai.adapter.http.dynamic.HttpDynamicInAdapterUri; @@ -31,6 +32,7 @@ import com.eactive.eai.common.server.EAIServerManager; import com.eactive.eai.common.stdmessage.STDMessageManager; import com.eactive.eai.common.stdmessage.STDMsgInfoAddOnVO; 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; @@ -168,6 +170,22 @@ public class ApiAdapterController implements HttpAdapterServiceKey { responseEntity = ResponseEntity.ok().contentType(mediaType).body(responseData); } } + + if (!"ASYNC".equals(responseType)) { + String uuid = transactionProp.getProperty(TransactionContextKeys.TRANSACTION_UUID); + String url = transactionProp.getProperty(HttpClientAdapterServiceKey.INBOUND_EXTURI); + String method = transactionProp.getProperty(HttpClientAdapterServiceKey.INBOUND_METHOD); + int httpStatusCode = servletResponse.getStatus(); + + Map headerMap = new HashMap<>(); + // 응답 헤더 로깅 + for (String headerName : servletResponse.getHeaderNames()) { + String headerValue = servletResponse.getHeader(headerName); + headerMap.put(headerName, headerValue); + } + HttpAdapterExtraLogUtil.insertHttpAdapterExtraLog(uuid, 400, adapterGroupName, adapterName, headerMap, url, method, httpStatusCode); + } + } catch (HttpStatusException e) { logger.warn("ApiAdapterController] " + adapterGroupName + "-" + adapterName + ">>" + e.getMessage()); String errorMsg = MessageUtil.makeErrorMessageByMessageType(adptMsgType, encode, MessageUtil.ERROR_CODE_AP_ERROR, @@ -189,7 +207,7 @@ public class ApiAdapterController implements HttpAdapterServiceKey { * 이미 거래처리가 끝나서 영향도가 없을만한 servletRequest에 Attribute로 전달 * 추후 더 좋은방법이 생길경우 개선 요망 */ - servletRequest.setAttribute(TransactionContextKeys.TRANSACTION_PROP, transactionProp); + servletRequest.setAttribute(TransactionContextKeys.TRANSACTION_PROP, transactionProp); } return responseEntity; } 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 a61cede..a81c77d 100644 --- a/src/main/java/com/eactive/eai/adapter/interceptor/HttpResponseLoggingInterceptor.java +++ b/src/main/java/com/eactive/eai/adapter/interceptor/HttpResponseLoggingInterceptor.java @@ -4,6 +4,8 @@ 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 org.apache.commons.lang.StringUtils; import org.springframework.web.servlet.HandlerInterceptor; @@ -14,9 +16,14 @@ import java.util.Map; import java.util.Properties; public class HttpResponseLoggingInterceptor implements HandlerInterceptor { - + + static Logger logger = Logger.getLogger(Logger.LOGGER_DEFAULT); + @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { + + logger.debug("httpHeader logging Interceptor start"); + Properties transactionProp = (Properties) request.getAttribute(TransactionContextKeys.TRANSACTION_PROP); if(transactionProp == null || "ASYN".equals(transactionProp.getProperty(HttpAdapterServiceKey.INBOUND_SYNC_ASYNC_TYPE))){ return;