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;

/**
 * Logging interceptor
 *
 * @since 0.0.3
 */
@Slf4j
public class LoggingInterceptor implements HandlerInterceptor {
    /**
     * Ip address, host name을 로깅
     * @param request
     * @param response
     * @param handler
     * @return
     * @throws Exception
     */
    @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();
    }


}