From 20d638da0b67bc6f29195502fd7c5733d53313a7 Mon Sep 17 00:00:00 2001 From: pricelees Date: Tue, 14 Oct 2025 09:32:32 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20Filter=EC=9D=98=20=EB=A7=88?= =?UTF-8?q?=EB=AC=B4=EB=A6=AC=20=EB=8B=A8=EA=B3=84=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=ED=98=84=EC=9E=AC=EC=9D=98=20Trace=20Context=20=EC=B4=88?= =?UTF-8?q?=EA=B8=B0=ED=99=94=EB=A5=BC=20=EC=9C=84=ED=95=9C=20CurrentTrace?= =?UTF-8?q?Context=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/sangdol/common/web/config/WebLoggingConfig.kt | 6 ++++-- .../sangdol/common/web/servlet/HttpRequestLoggingFilter.kt | 7 ++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/common/web/src/main/kotlin/com/sangdol/common/web/config/WebLoggingConfig.kt b/common/web/src/main/kotlin/com/sangdol/common/web/config/WebLoggingConfig.kt index 9539657e..be3aef54 100644 --- a/common/web/src/main/kotlin/com/sangdol/common/web/config/WebLoggingConfig.kt +++ b/common/web/src/main/kotlin/com/sangdol/common/web/config/WebLoggingConfig.kt @@ -4,6 +4,7 @@ import com.fasterxml.jackson.databind.ObjectMapper import com.sangdol.common.web.asepct.ControllerLoggingAspect import com.sangdol.common.web.servlet.HttpRequestLoggingFilter import com.sangdol.common.web.support.log.WebLogMessageConverter +import io.micrometer.tracing.CurrentTraceContext import org.springframework.boot.web.servlet.FilterRegistrationBean import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration @@ -17,9 +18,10 @@ class WebLoggingConfig { @Bean @DependsOn(value = ["webLogMessageConverter"]) fun filterRegistrationBean( - webLogMessageConverter: WebLogMessageConverter + webLogMessageConverter: WebLogMessageConverter, + currentTraceContext: CurrentTraceContext ): FilterRegistrationBean { - val filter = HttpRequestLoggingFilter(webLogMessageConverter) + val filter = HttpRequestLoggingFilter(webLogMessageConverter, currentTraceContext) return FilterRegistrationBean(filter) .apply { this.order = Ordered.HIGHEST_PRECEDENCE + 2 } diff --git a/common/web/src/main/kotlin/com/sangdol/common/web/servlet/HttpRequestLoggingFilter.kt b/common/web/src/main/kotlin/com/sangdol/common/web/servlet/HttpRequestLoggingFilter.kt index a5e45a5d..e0a22dd2 100644 --- a/common/web/src/main/kotlin/com/sangdol/common/web/servlet/HttpRequestLoggingFilter.kt +++ b/common/web/src/main/kotlin/com/sangdol/common/web/servlet/HttpRequestLoggingFilter.kt @@ -5,6 +5,7 @@ import com.sangdol.common.utils.MdcStartTimeUtil import com.sangdol.common.web.support.log.WebLogMessageConverter import io.github.oshai.kotlinlogging.KLogger import io.github.oshai.kotlinlogging.KotlinLogging +import io.micrometer.tracing.CurrentTraceContext import jakarta.servlet.FilterChain import jakarta.servlet.http.HttpServletRequest import jakarta.servlet.http.HttpServletResponse @@ -15,7 +16,8 @@ import org.springframework.web.util.ContentCachingResponseWrapper private val log: KLogger = KotlinLogging.logger {} class HttpRequestLoggingFilter( - private val messageConverter: WebLogMessageConverter + private val messageConverter: WebLogMessageConverter, + private val currentTraceContext: CurrentTraceContext ) : OncePerRequestFilter() { override fun doFilterInternal( request: HttpServletRequest, @@ -32,9 +34,12 @@ class HttpRequestLoggingFilter( try { filterChain.doFilter(cachedRequest, cachedResponse) cachedResponse.copyBodyToResponse() + } catch (e: Exception) { + throw e } finally { MdcStartTimeUtil.clear() MdcPrincipalIdUtil.clear() + currentTraceContext.maybeScope(null) } } }