22
33import jakarta .servlet .http .HttpServletRequest ;
44import jakarta .servlet .http .HttpServletResponse ;
5+ import java .util .UUID ;
56import org .slf4j .Logger ;
67import org .slf4j .LoggerFactory ;
8+ import org .slf4j .MDC ;
79import org .springframework .stereotype .Component ;
810import org .springframework .web .servlet .HandlerInterceptor ;
911
@@ -12,11 +14,15 @@ public class LoggingInterceptor implements HandlerInterceptor {
1214
1315 private static final Logger log = LoggerFactory .getLogger (LoggingInterceptor .class );
1416 private static final String START_TIME = "startTime" ;
17+ private static final String REQUEST_ID = "requestId" ;
1518
1619 @ Override
1720 public boolean preHandle (HttpServletRequest request , HttpServletResponse response , Object handler ) {
1821 request .setAttribute (START_TIME , System .currentTimeMillis ());
19- log .info ("request: [{}] {}" , request .getMethod (), request .getRequestURI ());
22+ String requestId = UUID .randomUUID ().toString ().substring (0 , 8 );
23+ MDC .put (REQUEST_ID , requestId );
24+
25+ log .info ("[Request] {} {}" , request .getMethod (), request .getRequestURI ());
2026 return true ;
2127 }
2228
@@ -29,6 +35,8 @@ public void afterCompletion(
2935 ) {
3036 Long startTime = (Long ) request .getAttribute (START_TIME );
3137 long duration = System .currentTimeMillis () - startTime ;
32- log .info ("response: [{}] {} ({} ms)" , request .getMethod (), request .getRequestURI (), duration );
38+
39+ log .info ("[Response] {} {} ({}ms)" , request .getMethod (), request .getRequestURI (), duration );
40+ MDC .clear ();
3341 }
3442}
0 commit comments