mirror of
https://github.com/InsanusMokrassar/KSLog.git
synced 2024-06-01 23:45:18 +00:00
51 lines
1.4 KiB
Kotlin
51 lines
1.4 KiB
Kotlin
|
package dev.inmo.kslog.common
|
||
|
|
||
|
|
||
|
enum class LogLevel {
|
||
|
VERBOSE,
|
||
|
INFO,
|
||
|
WARNING,
|
||
|
ERROR,
|
||
|
ASSERT,
|
||
|
DEBUG
|
||
|
}
|
||
|
|
||
|
interface KSLog {
|
||
|
fun performLog(level: LogLevel, tag: String?, message: String, throwable: Throwable?)
|
||
|
companion object : KSLog {
|
||
|
private var defaultLogger: KSLog? = null
|
||
|
var DEFAULT: KSLog
|
||
|
get() {
|
||
|
return defaultLogger ?: KSLog("app").also {
|
||
|
defaultLogger = it
|
||
|
}
|
||
|
}
|
||
|
set(value) {
|
||
|
defaultLogger = value
|
||
|
}
|
||
|
override fun performLog(level: LogLevel, tag: String?, message: String, throwable: Throwable?) = DEFAULT.performLog(level, tag, message, throwable)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
operator fun KSLog.invoke(performLogCallback: (level: LogLevel, tag: String?, message: String, throwable: Throwable?) -> Unit) = CallbackKSLog(performLogCallback)
|
||
|
|
||
|
class CallbackKSLog(
|
||
|
private val performLogCallback: (level: LogLevel, tag: String?, message: String, throwable: Throwable?) -> Unit
|
||
|
) : KSLog {
|
||
|
override fun performLog(level: LogLevel, tag: String?, message: String, throwable: Throwable?) = performLogCallback(level, tag, message, throwable)
|
||
|
}
|
||
|
|
||
|
|
||
|
expect fun KSLog(
|
||
|
defaultTag: String,
|
||
|
filter: (l: LogLevel, t: String, m: String, Throwable?) -> Boolean
|
||
|
) : KSLog
|
||
|
|
||
|
fun KSLog(
|
||
|
defaultTag: String,
|
||
|
levels: Set<LogLevel> = LogLevel.values().toSet()
|
||
|
): KSLog = KSLog (defaultTag) { l, _, _, _ ->
|
||
|
l in levels
|
||
|
}
|