Skip to content

Commit 2c4a8e4

Browse files
committed
Added request/response logging interceptor
1 parent 17a6838 commit 2c4a8e4

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

spring-interceptor/src/main/java/com/stacktips/interceptors/LogHandlerInterceptor.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,23 @@
33
import jakarta.servlet.http.HttpServletRequest;
44
import jakarta.servlet.http.HttpServletResponse;
55
import lombok.extern.slf4j.Slf4j;
6+
import org.springframework.http.HttpStatusCode;
67
import org.springframework.web.servlet.HandlerInterceptor;
78
import org.springframework.web.servlet.ModelAndView;
89

10+
import java.io.IOException;
11+
import java.util.Enumeration;
12+
import java.util.HashMap;
13+
import java.util.Map;
14+
import java.util.stream.Collectors;
15+
916
@Slf4j
1017
public class LogHandlerInterceptor implements HandlerInterceptor {
1118

1219
@Override
1320
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
1421
log.info("LogHandlerInterceptor::preHandle()");
22+
logRequestDetails(request);
1523
return true;
1624
}
1725

@@ -23,5 +31,34 @@ public void postHandle(HttpServletRequest request, HttpServletResponse response,
2331
@Override
2432
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
2533
log.info("LogHandlerInterceptor::afterCompletion()");
34+
logResponseDetails(response);
35+
}
36+
37+
38+
private void logRequestDetails(HttpServletRequest request) {
39+
log.info("Request: {}: {}", request.getMethod(), request.getRequestURL());
40+
Enumeration<String> headerNames = request.getHeaderNames();
41+
Map<String, String> headers = new HashMap<>();
42+
while (headerNames.hasMoreElements()) {
43+
String headerName = headerNames.nextElement();
44+
headers.put(headerName, request.getHeader(headerName));
45+
}
46+
log.info("Request headers: {}", headers);
47+
48+
try {
49+
String body = request.getReader().lines().collect(Collectors.joining(System.lineSeparator()));
50+
log.info("Request body: {}", body);
51+
} catch (IOException e) {
52+
log.error("Error reading the request body: ", e);
53+
}
54+
}
55+
56+
private void logResponseDetails(HttpServletResponse response) {
57+
log.info("Response: {}", HttpStatusCode.valueOf(response.getStatus()));
58+
Map<String, String> headers = new HashMap<>();
59+
for (String headerName : response.getHeaderNames()) {
60+
headers.put(headerName, response.getHeader(headerName));
61+
}
62+
log.info("Response headers: {}", headers);
2663
}
2764
}

0 commit comments

Comments
 (0)