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) } } }