diff --git a/src/main/kotlin/roomescape/common/log/LoggingFilter.kt b/src/main/kotlin/roomescape/common/log/LoggingFilter.kt index ea155306..07a63658 100644 --- a/src/main/kotlin/roomescape/common/log/LoggingFilter.kt +++ b/src/main/kotlin/roomescape/common/log/LoggingFilter.kt @@ -11,6 +11,7 @@ import org.springframework.stereotype.Component import org.springframework.web.filter.OncePerRequestFilter import org.springframework.web.util.ContentCachingRequestWrapper import org.springframework.web.util.ContentCachingResponseWrapper +import java.nio.charset.StandardCharsets private val log = KotlinLogging.logger {} @@ -54,12 +55,20 @@ class LoggingFilter( if (log.isDebugEnabled()) { request.contentAsByteArray.takeIf { it.isNotEmpty() } - ?.let { payload["request_body"] = objectMapper.readValue(it, Map::class.java) } + ?.let { payload["request_body"] = parseContent(it) } response.contentAsByteArray.takeIf { it.isNotEmpty() } - ?.let { payload["response_body"] = objectMapper.readValue(it, Map::class.java) } + ?.let { payload["response_body"] = parseContent(it) } } log.info { objectMapper.writeValueAsString(payload) } } + + private fun parseContent(content: ByteArray): Any { + return try { + objectMapper.readValue(content, Map::class.java) + } catch (_: Exception) { + String(content, StandardCharsets.UTF_8) + } + } }