All Downloads are FREE. Search and download functionalities are using the official Maven repository.

jvmMain.ActualLogger.kt Maven / Gradle / Ivy

package dev.inmo.kslog.common

import dev.inmo.kslog.common.filter.filtered
import java.util.logging.Level
import java.util.logging.Logger

private val defaultKSLogLogger by lazy {
    Logger.getLogger("KSLog")
}
private fun Logger.doLog(
    l: LogLevel, t: String, m: String, e: Throwable?
) = log(
    when(l) {
        LogLevel.DEBUG -> Level.FINEST
        LogLevel.VERBOSE -> Level.FINE
        LogLevel.INFO -> Level.INFO
        LogLevel.WARNING -> Level.WARNING
        LogLevel.ERROR -> Level.SEVERE
        LogLevel.ASSERT -> Level.SEVERE
    },
    m,
    e
)
internal actual val defaultLogging: (level: LogLevel, tag: String, message: Any, throwable: Throwable?) -> Unit = { l, t, m, e ->
    defaultKSLogLogger.doLog(l, t, m.toString(), e)
}

@Deprecated("Filtering should be replaced with FilterKSLog")
fun KSLog(
    defaultTag: String,
    logger: Logger,
    filter: MessageFilter,
    messageFormatter: MessageFormatter = defaultMessageFormatter
) = KSLog { l, t, m, e ->
    if (!filter(l, t, e)) return@KSLog
    val text = messageFormatter(l,t ?: defaultTag,m.toString(),e)
    logger.doLog(l, t ?: defaultTag, text, e)
}

fun KSLog(
    defaultTag: String,
    logger: Logger,
    messageFormatter: MessageFormatter = defaultMessageFormatter
) = KSLog { l, t, m, e ->
    val text = messageFormatter(l,t ?: defaultTag,m.toString(),e)
    logger.doLog(l, t ?: defaultTag, text, e)
}

fun KSLog(
    defaultTag: String,
    logger: Logger,
    levels: Iterable,
    messageFormatter: MessageFormatter = defaultMessageFormatter
): KSLog {
    val levels = levels.toSet()
    return KSLog (defaultTag, logger, messageFormatter).filtered { l, _, _ -> l in levels }
}

fun KSLog(
    defaultTag: String,
    logger: Logger,
    firstLevel: LogLevel,
    secondLevel: LogLevel,
    vararg otherLevels: LogLevel,
    messageFormatter: MessageFormatter = defaultMessageFormatter,
): KSLog = KSLog (defaultTag, logger, setOf(firstLevel, secondLevel, *otherLevels), messageFormatter)

fun KSLog(
    defaultTag: String,
    logger: Logger,
    minLoggingLevel: LogLevel = LogLevel.values().first(),
    messageFormatter: MessageFormatter = defaultMessageFormatter
): KSLog = KSLog (defaultTag, logger, messageFormatter).filtered { l, _, _ -> minLoggingLevel.ordinal <= l.ordinal }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy