3
3
import jakarta .servlet .http .HttpServletRequest ;
4
4
import jakarta .servlet .http .HttpServletResponse ;
5
5
import lombok .extern .slf4j .Slf4j ;
6
+ import org .springframework .http .HttpStatusCode ;
6
7
import org .springframework .web .servlet .HandlerInterceptor ;
7
8
import org .springframework .web .servlet .ModelAndView ;
8
9
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
+
9
16
@ Slf4j
10
17
public class LogHandlerInterceptor implements HandlerInterceptor {
11
18
12
19
@ Override
13
20
public boolean preHandle (HttpServletRequest request , HttpServletResponse response , Object handler ) throws Exception {
14
21
log .info ("LogHandlerInterceptor::preHandle()" );
22
+ logRequestDetails (request );
15
23
return true ;
16
24
}
17
25
@@ -23,5 +31,34 @@ public void postHandle(HttpServletRequest request, HttpServletResponse response,
23
31
@ Override
24
32
public void afterCompletion (HttpServletRequest request , HttpServletResponse response , Object handler , Exception ex ) throws Exception {
25
33
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 );
26
63
}
27
64
}
0 commit comments