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);