generated from pricelees/issue-pr-template
feat: HTTP 요청을 받아 기록하는 필터
This commit is contained in:
parent
5e0a52cb47
commit
a2fea10f50
@ -0,0 +1,39 @@
|
|||||||
|
package roomescape.common.log
|
||||||
|
|
||||||
|
import io.github.oshai.kotlinlogging.KLogger
|
||||||
|
import io.github.oshai.kotlinlogging.KotlinLogging
|
||||||
|
import jakarta.servlet.FilterChain
|
||||||
|
import jakarta.servlet.http.HttpServletRequest
|
||||||
|
import jakarta.servlet.http.HttpServletResponse
|
||||||
|
import org.slf4j.MDC
|
||||||
|
import org.springframework.web.filter.OncePerRequestFilter
|
||||||
|
import org.springframework.web.util.ContentCachingRequestWrapper
|
||||||
|
import org.springframework.web.util.ContentCachingResponseWrapper
|
||||||
|
|
||||||
|
private val log: KLogger = KotlinLogging.logger {}
|
||||||
|
|
||||||
|
class HttpRequestLoggingFilter(
|
||||||
|
private val messageConverter: ApiLogMessageConverter
|
||||||
|
) : OncePerRequestFilter() {
|
||||||
|
override fun doFilterInternal(
|
||||||
|
request: HttpServletRequest,
|
||||||
|
response: HttpServletResponse,
|
||||||
|
filterChain: FilterChain
|
||||||
|
) {
|
||||||
|
log.info { messageConverter.convertToHttpRequestMessage(request) }
|
||||||
|
|
||||||
|
val cachedRequest = ContentCachingRequestWrapper(request)
|
||||||
|
val cachedResponse = ContentCachingResponseWrapper(response)
|
||||||
|
|
||||||
|
val startTime = System.currentTimeMillis()
|
||||||
|
MDC.put("startTime", startTime.toString())
|
||||||
|
|
||||||
|
try {
|
||||||
|
filterChain.doFilter(cachedRequest, cachedResponse)
|
||||||
|
cachedResponse.copyBodyToResponse()
|
||||||
|
} finally {
|
||||||
|
MDC.remove("startTime")
|
||||||
|
MDC.remove("member_id")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user