diff --git a/backend/src/main/java/endolphin/backend/global/config/FilterConfig.java b/backend/src/main/java/endolphin/backend/global/config/FilterConfig.java new file mode 100644 index 00000000..aff7180a --- /dev/null +++ b/backend/src/main/java/endolphin/backend/global/config/FilterConfig.java @@ -0,0 +1,29 @@ +package endolphin.backend.global.config; + +import endolphin.backend.global.logging.LogFilter; +import endolphin.backend.global.security.JwtAuthFilter; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class FilterConfig { + + @Bean + public FilterRegistrationBean logFilterFilterRegistrationBean() { + FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean<>(); + filterRegistrationBean.setFilter(new LogFilter()); + filterRegistrationBean.addUrlPatterns("/api/v1/*"); + filterRegistrationBean.setOrder(1); + return filterRegistrationBean; + } + + @Bean + public FilterRegistrationBean jwtAuthFilterRegistration(JwtAuthFilter filter) { + FilterRegistrationBean registration = new FilterRegistrationBean<>(); + registration.setFilter(filter); + registration.addUrlPatterns("/*"); + registration.setOrder(2); + return registration; + } +} diff --git a/backend/src/main/java/endolphin/backend/global/logging/LogFilter.java b/backend/src/main/java/endolphin/backend/global/logging/LogFilter.java new file mode 100644 index 00000000..246ce40f --- /dev/null +++ b/backend/src/main/java/endolphin/backend/global/logging/LogFilter.java @@ -0,0 +1,36 @@ +package endolphin.backend.global.logging; + +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.UUID; +import lombok.extern.slf4j.Slf4j; +import org.slf4j.MDC; +import org.springframework.web.filter.OncePerRequestFilter; + +@Slf4j +public class LogFilter extends OncePerRequestFilter { + + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, + FilterChain filterChain) throws ServletException, IOException { + + long startTime = System.nanoTime(); + String correlationId = UUID.randomUUID().toString(); + MDC.put("correlationId", correlationId); + log.info("Incoming Request: [{}] {} {}", + request.getMethod(), request.getRequestURI(), + request.getQueryString() != null ? request.getQueryString() : ""); + + filterChain.doFilter(request, response); + + long endTime = System.nanoTime(); + log.info("Incoming Response: [{}] {}, {}, {} ms", + request.getMethod(), request.getRequestURI() , + response.getStatus(), (endTime - startTime) / 1_000_000.0); + + MDC.clear(); + } +} diff --git a/backend/src/main/java/endolphin/backend/global/security/SecurityConfig.java b/backend/src/main/java/endolphin/backend/global/security/SecurityConfig.java deleted file mode 100644 index bb08ea6c..00000000 --- a/backend/src/main/java/endolphin/backend/global/security/SecurityConfig.java +++ /dev/null @@ -1,19 +0,0 @@ -package endolphin.backend.global.security; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.boot.web.servlet.FilterRegistrationBean; - -@Configuration -public class SecurityConfig { - - @Bean - public FilterRegistrationBean jwtAuthFilterRegistration(JwtAuthFilter filter) { - FilterRegistrationBean registration = new FilterRegistrationBean<>(); - registration.setFilter(filter); - registration.addUrlPatterns("/*"); - registration.setOrder(1); - return registration; - } -} - diff --git a/backend/src/main/resources/logback-spring.xml b/backend/src/main/resources/logback-spring.xml new file mode 100644 index 00000000..93153ab0 --- /dev/null +++ b/backend/src/main/resources/logback-spring.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + ${CONSOLE_LOG_PATTERN} + + + + + + + + + + + + + + + + ${LOG_PATH}/myapp-%d{yyyy-MM-dd}.%i.log + 30 + 10MB + 500MB + + + + ${FILE_LOG_PATTERN} + + + + + + 512 + 0 + false + true + + + + + + + + + + + + \ No newline at end of file