generated from pricelees/issue-pr-template
[#60] Trace Context의 초기화 오류로 발생하는 OOM 문제 해결 #63
@ -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<OncePerRequestFilter> {
|
||||
val filter = HttpRequestLoggingFilter(webLogMessageConverter)
|
||||
val filter = HttpRequestLoggingFilter(webLogMessageConverter, currentTraceContext)
|
||||
|
||||
return FilterRegistrationBean<OncePerRequestFilter>(filter)
|
||||
.apply { this.order = Ordered.HIGHEST_PRECEDENCE + 2 }
|
||||
|
||||
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user