From ade021f16a665cff8647321f56040a78dc6819ce Mon Sep 17 00:00:00 2001 From: kanthi subramanian Date: Wed, 17 Dec 2025 13:44:16 -0600 Subject: [PATCH] Added debug logs to print response size, response body and response time. set logging level to DEBUG --- .../internal/rest/RESTCatalogServlet.java | 41 +++++++++++++++++-- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/ice-rest-catalog/src/main/java/com/altinity/ice/rest/catalog/internal/rest/RESTCatalogServlet.java b/ice-rest-catalog/src/main/java/com/altinity/ice/rest/catalog/internal/rest/RESTCatalogServlet.java index 3f8d0d4..7d627ed 100644 --- a/ice-rest-catalog/src/main/java/com/altinity/ice/rest/catalog/internal/rest/RESTCatalogServlet.java +++ b/ice-rest-catalog/src/main/java/com/altinity/ice/rest/catalog/internal/rest/RESTCatalogServlet.java @@ -23,6 +23,8 @@ import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; +import java.io.StringWriter; +import java.nio.charset.StandardCharsets; import java.util.Map; import java.util.stream.Collectors; import org.apache.hc.core5.http.ContentType; @@ -79,6 +81,7 @@ public RESTCatalogServlet(RESTCatalogHandler restCatalogAdapter) { protected void handle(HttpServletRequest request, HttpServletResponse response) throws IOException { + long startTime = System.currentTimeMillis(); HTTPRequest.HTTPMethod method = HTTPRequest.HTTPMethod.valueOf(request.getMethod()); String path = request.getRequestURI().substring(1); @@ -91,7 +94,11 @@ protected void handle(HttpServletRequest request, HttpServletResponse response) .withType("BadRequestException") .withMessage(String.format("No route for %s %s", method, path)) .build(); - RESTObjectMapper.mapper().writeValue(response.getWriter(), res); + StringWriter noRouteWriter = new StringWriter(); + RESTObjectMapper.mapper().writeValue(noRouteWriter, res); + String noRouteBody = noRouteWriter.toString(); + response.getWriter().write(noRouteBody); + logResponseDebug(startTime, noRouteBody); return; } @@ -140,15 +147,43 @@ protected void handle(HttpServletRequest request, HttpServletResponse response) response.setStatus(error.code()); response.setHeader(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_JSON.getMimeType()); - RESTObjectMapper.mapper().writeValue(response.getWriter(), error); + StringWriter errorWriter = new StringWriter(); + RESTObjectMapper.mapper().writeValue(errorWriter, error); + String errorBody = errorWriter.toString(); + response.getWriter().write(errorBody); + logResponseDebug(startTime, errorBody); return; } response.setStatus(HttpServletResponse.SC_OK); response.setHeader(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_JSON.getMimeType()); + String responseBodyStr = null; if (responseBody != null) { - RESTObjectMapper.mapper().writeValue(response.getWriter(), responseBody); + StringWriter stringWriter = new StringWriter(); + RESTObjectMapper.mapper().writeValue(stringWriter, responseBody); + responseBodyStr = stringWriter.toString(); + response.getWriter().write(responseBodyStr); } + logResponseDebug(startTime, responseBodyStr); + } + + private void logResponseDebug(long startTime, String responseBody) { + if (!logger.isDebugEnabled()) { + return; + } + long responseTimeMs = System.currentTimeMillis() - startTime; + int responseSizeBytes = + responseBody != null ? responseBody.getBytes(StandardCharsets.UTF_8).length : 0; + String truncatedBody = ""; + if (responseBody != null) { + truncatedBody = + responseBody.length() > 2000 ? responseBody.substring(0, 2000) + "..." : responseBody; + } + logger.debug( + "Response: time={}ms, size={} bytes, body={}", + responseTimeMs, + responseSizeBytes, + truncatedBody); } @Override