LoggingInterceptor.java

package com.github.can019.global.interceptor;

import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.ThreadContext;
import org.springframework.web.servlet.HandlerInterceptor;

import java.util.UUID;

@Slf4j
public class LoggingInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        ThreadContext.put("ipAddress", request.getRemoteAddr());
        ThreadContext.put("hostName", request.getServerName());

        log.trace("Add ipAddress :: {} and hostName :: {} to ThreadContext",
                request.getRemoteAddr(), request.getServerName() );

        return true;
    }
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response,
                                Object handler, Exception ex) throws Exception {
        log.info("Response {} {} {} {}",request.getMethod(),
                request.getRequestURI(), response.getContentType(), response.getStatus());
        log.trace("Clear ThreadContext");
//        ThreadContext.clearMap();
    }


}