rewrite way of filters work

This commit is contained in:
2022-07-30 14:56:26 +06:00
parent be48c2559e
commit 4d98b7df18
8 changed files with 142 additions and 24 deletions

View File

@@ -1,27 +1,24 @@
package dev.inmo.kslog.common
import dev.inmo.kslog.common.filter.filtered
class DefaultKSLog(
private val defaultTag: String,
val filter: MessageFilter = { _, _, _ -> true },
private val messageFormatter: MessageFormatter = defaultMessageFormatter,
private val logging: (level: LogLevel, tag: String, message: Any, throwable: Throwable?) -> Unit = defaultLogging
) : KSLog {
override fun performLog(level: LogLevel, tag: String?, message: Any, throwable: Throwable?) {
val tag = tag ?: defaultTag
if (filter(level, tag, throwable)) {
val text = messageFormatter(level, tag, message, throwable)
logging(level, tag, text, throwable)
}
val text = messageFormatter(level, tag, message, throwable)
logging(level, tag, text, throwable)
}
override fun performLog(level: LogLevel, tag: String?, throwable: Throwable?, messageBuilder: () -> Any) {
val tag = tag ?: defaultTag
if (filter(level, tag, throwable)) {
val text = messageFormatter(level, tag, messageBuilder(), throwable)
logging(level, tag, text, throwable)
}
val text = messageFormatter(level, tag, messageBuilder(), throwable)
logging(level, tag, text, throwable)
}
override suspend fun performLogS(
@@ -32,9 +29,17 @@ class DefaultKSLog(
) {
val tag = tag ?: defaultTag
if (filter(level, tag, throwable)) {
val text = messageFormatter(level, tag, messageBuilder(), throwable)
logging(level, tag, text, throwable)
}
val text = messageFormatter(level, tag, messageBuilder(), throwable)
logging(level, tag, text, throwable)
}
}
@Deprecated("Filtering should be replaced with FilterKSLog")
fun DefaultKSLog(
defaultTag: String,
filter: MessageFilter = { _, _, _ -> true },
messageFormatter: MessageFormatter = defaultMessageFormatter,
logging: (level: LogLevel, tag: String, message: Any, throwable: Throwable?) -> Unit = defaultLogging
) = DefaultKSLog(
defaultTag, messageFormatter, logging
).filtered(filter)