From 2099874d192c2d1f46bb93eb95e9b2dc96f3507b Mon Sep 17 00:00:00 2001 From: kkanggu Date: Sun, 6 Aug 2023 15:50:23 +0900 Subject: [PATCH] =?UTF-8?q?hotfix:=20Body=EB=A5=BC=20=EC=97=AC=EB=9F=AC?= =?UTF-8?q?=EB=B2=88=20=EC=9D=BD=EC=96=B4=20=EC=98=88=EC=99=B8=EA=B0=80=20?= =?UTF-8?q?=EB=B0=9C=EC=83=9D=ED=95=98=EB=8A=94=20=EC=9D=B4=EC=8A=88=20?= =?UTF-8?q?=ED=95=B4=EA=B2=B0=20(#19)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../configuration/RequestLoggingFilter.kt | 41 ++++++++++--------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/common/src/main/kotlin/com/example/common/configuration/RequestLoggingFilter.kt b/common/src/main/kotlin/com/example/common/configuration/RequestLoggingFilter.kt index b840097d..43ac69bc 100644 --- a/common/src/main/kotlin/com/example/common/configuration/RequestLoggingFilter.kt +++ b/common/src/main/kotlin/com/example/common/configuration/RequestLoggingFilter.kt @@ -8,6 +8,7 @@ import mu.KLogger import mu.KotlinLogging import org.springframework.stereotype.Component import org.springframework.web.filter.OncePerRequestFilter +import org.springframework.web.util.ContentCachingRequestWrapper import org.springframework.web.util.ContentCachingResponseWrapper @Component @@ -15,10 +16,11 @@ class RequestLoggingFilter : OncePerRequestFilter() { private val log: KLogger = KotlinLogging.logger {} override fun doFilterInternal(request: HttpServletRequest, response: HttpServletResponse, filterChain: FilterChain) { - log.info { makeRequestLog(request) } + val wrappedRequest = ContentCachingRequestWrapper(request) + log.info { makeRequestLog(wrappedRequest) } val wrappedResponse = ContentCachingResponseWrapper(response) - filterChain.doFilter(request, wrappedResponse) + filterChain.doFilter(wrappedRequest, wrappedResponse) log.info { makeResponseLog(wrappedResponse) } } @@ -27,17 +29,18 @@ class RequestLoggingFilter : OncePerRequestFilter() { val requestHeaders = request.headerNames.toList().associateWith { request.getHeader(it) } - val requestBody = request.reader.lines().toList().joinToString("\n") + val contentAsByteArray = (request as ContentCachingRequestWrapper).contentAsByteArray + val requestBody = if (contentAsByteArray.isNotEmpty()) String(contentAsByteArray) else "" return """ - { - "request" : { - "uri" : "${request.requestURI}", - "headers" : ${jacksonObjectMapper().writeValueAsString(requestHeaders)}, - "body" : "$requestBody" - } - } - """.trimIndent() + { + "request" : { + "uri" : "${request.requestURI}", + "headers" : ${jacksonObjectMapper().writeValueAsString(requestHeaders)}, + "body" : "$requestBody" + } + } + """.trimIndent() } private fun makeResponseLog(wrappedResponse: ContentCachingResponseWrapper): String { @@ -48,14 +51,14 @@ class RequestLoggingFilter : OncePerRequestFilter() { wrappedResponse.copyBodyToResponse() return """ - { - "response" : { - "status" : "${wrappedResponse.status}", - "headers" : ${jacksonObjectMapper().writeValueAsString(responseHeaders)}, - "body" : "$responseBody" - } - } - """.trimIndent() + { + "response" : { + "status" : "${wrappedResponse.status}", + "headers" : ${jacksonObjectMapper().writeValueAsString(responseHeaders)}, + "body" : "$responseBody" + } + } + """.trimIndent() } private fun getResponseBody(responseBody: ByteArray): String {