37 lines
1.3 KiB
Kotlin
37 lines
1.3 KiB
Kotlin
package dev.inmo.kslog.common.filter
|
|
|
|
import dev.inmo.kslog.common.*
|
|
|
|
/**
|
|
* In its [performLog]/[performLogS] methods do logging only in cases when [messageFilter] returns true for incoming
|
|
* parameters
|
|
*/
|
|
class FilterKSLog(
|
|
private val fallbackLogger: KSLog,
|
|
private val messageFilter: MessageFilter
|
|
) : KSLog {
|
|
override fun performLog(level: LogLevel, tag: String?, message: Any, throwable: Throwable?) {
|
|
if (messageFilter(level, tag, throwable)) {
|
|
fallbackLogger.performLog(level, tag, message, throwable)
|
|
}
|
|
}
|
|
|
|
override fun performLog(level: LogLevel, message: Any, throwable: Throwable?) {
|
|
if (messageFilter(level, null, throwable)) {
|
|
fallbackLogger.performLog(level, message, throwable)
|
|
}
|
|
}
|
|
|
|
override fun performLog(level: LogLevel, tag: String?, throwable: Throwable?, messageBuilder: () -> Any) {
|
|
if (messageFilter(level, tag, throwable)) {
|
|
fallbackLogger.performLog(level, tag, throwable, messageBuilder)
|
|
}
|
|
}
|
|
|
|
override suspend fun performLogS(level: LogLevel, tag: String?, throwable: Throwable?, messageBuilder: suspend () -> Any) {
|
|
if (messageFilter(level, tag, throwable)) {
|
|
fallbackLogger.performLogS(level, tag, throwable, messageBuilder)
|
|
}
|
|
}
|
|
}
|