DebugLoggingTurboFilter.kt
package com.example.templateproject.web.configuration
import ch.qos.logback.classic.Level
import ch.qos.logback.classic.Logger
import ch.qos.logback.classic.turbo.MDCFilter
import ch.qos.logback.core.spi.FilterReply
import com.example.templateproject.TemplateApplication
import org.slf4j.Marker
class DebugLoggingTurboFilter : MDCFilter() {
private var packages: String? = null
fun setPackages(packages: String) {
this.packages = packages
}
override fun decide(
marker: Marker?,
logger: Logger?,
level: Level?,
format: String?,
params: Array<out Any>?,
t: Throwable?,
): FilterReply {
if (!isStarted) {
return FilterReply.NEUTRAL
}
var filterReply = super.decide(marker, logger, level, format, params, t)
if (filterReply === FilterReply.ACCEPT) {
filterReply =
extendPackagesWithProjectBasePackage()
.split(",")
.stream()
.filter { e -> logger?.name?.startsWith(e) ?: false }
.map { FilterReply.ACCEPT }
.findAny()
.orElse(FilterReply.NEUTRAL)
}
return filterReply
}
private fun extendPackagesWithProjectBasePackage(): String {
val basePackage = TemplateApplication::class.java.`package`.name
return "$basePackage,$packages"
}
}