mirror of
https://github.com/InsanusMokrassar/KSLog.git
synced 2024-06-18 07:45:23 +00:00
41 lines
1.1 KiB
Kotlin
41 lines
1.1 KiB
Kotlin
|
package truth.simple.kmp.logger.common
|
||
|
|
||
|
|
||
|
enum class LogLevel {
|
||
|
VERBOSE,
|
||
|
INFO,
|
||
|
WARNING,
|
||
|
ERROR,
|
||
|
ASSERT,
|
||
|
DEBUG
|
||
|
}
|
||
|
|
||
|
interface Logger {
|
||
|
fun log (level: LogLevel, message: String, tag: String? = null, throwable: Throwable? = null)
|
||
|
companion object : Logger {
|
||
|
var DEFAULT: Logger = Logger("app")
|
||
|
override fun log(level: LogLevel, message: String, tag: String?, throwable: Throwable?) = DEFAULT.log(level, message, tag, throwable)
|
||
|
|
||
|
operator fun invoke (log: (level: LogLevel, message: String, tag: String?, throwable: Throwable?) -> Unit) = CallbackLogger(log)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class CallbackLogger(
|
||
|
private val logger: (level: LogLevel, message: String, tag: String?, throwable: Throwable?) -> Unit
|
||
|
) : Logger {
|
||
|
override fun log(level: LogLevel, message: String, tag: String?, throwable: Throwable?) = logger(level, message, tag, throwable)
|
||
|
}
|
||
|
|
||
|
|
||
|
expect fun Logger(
|
||
|
defaultTag: String,
|
||
|
filter: (l: LogLevel, m: String, t: String, Throwable?) -> Boolean
|
||
|
) : Logger
|
||
|
|
||
|
fun Logger(
|
||
|
defaultTag: String,
|
||
|
levels: Set<LogLevel> = LogLevel.values().toSet()
|
||
|
): Logger = Logger (defaultTag) { l, _, _, _ ->
|
||
|
l in levels
|
||
|
}
|