diff --git a/src/main/kotlin/roomescape/common/log/RoomescapeLogMaskingConverter.kt b/src/main/kotlin/roomescape/common/log/RoomescapeLogMaskingConverter.kt index 58e41174..7778d96f 100644 --- a/src/main/kotlin/roomescape/common/log/RoomescapeLogMaskingConverter.kt +++ b/src/main/kotlin/roomescape/common/log/RoomescapeLogMaskingConverter.kt @@ -11,10 +11,9 @@ import roomescape.common.config.JacksonConfig private const val MASK: String = "****" private val SENSITIVE_KEYS = setOf("password", "accessToken") +private val objectMapper: ObjectMapper = JacksonConfig().objectMapper() -class RoomescapeLogMaskingConverter( - private val objectMapper: ObjectMapper = JacksonConfig().objectMapper() -) : MessageConverter() { +class RoomescapeLogMaskingConverter : MessageConverter() { override fun convert(event: ILoggingEvent): String { val message: String = event.formattedMessage @@ -42,8 +41,17 @@ class RoomescapeLogMaskingConverter( return regex.replace(message) { matchResult -> val key = matchResult.groupValues[1] val delimiter = matchResult.groupValues[2] + val maskedValue = maskValue(matchResult.groupValues[3]) - "${key}${delimiter}${MASK}" + "${key}${delimiter}${maskedValue}" + } + } + + private fun maskValue(value: String): String { + return if (value.length <= 2) { + MASK + } else { + "${value.first()}$MASK${value.last()}" } }