Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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)

AltStyle によって変換されたページ (->オリジナル) /