KSLog/src/jvmMain/kotlin/ActualLogger.kt

27 lines
826 B
Kotlin

package dev.inmo.kslog.common
import java.util.logging.Level
actual fun Logger(
defaultTag: String,
filter: (l: LogLevel, m: String, t: String, Throwable?) -> Boolean
): Logger {
val logger = java.util.logging.Logger.getLogger(defaultTag)
return Logger { l, m, t, e ->
if (!filter(l, m, t ?: defaultTag, e)) return@Logger
val currentLogger = t ?.let { java.util.logging.Logger.getLogger(t) } ?: logger
currentLogger.log(
when(l) {
LogLevel.VERBOSE -> Level.FINEST
LogLevel.INFO -> Level.INFO
LogLevel.WARNING -> Level.WARNING
LogLevel.ERROR -> Level.SEVERE
LogLevel.ASSERT -> Level.OFF
LogLevel.DEBUG -> Level.ALL
},
m,
e
)
}
}