2022-06-09 03:56:27 +00:00
|
|
|
package dev.inmo.kslog.common
|
|
|
|
|
2022-07-30 08:56:26 +00:00
|
|
|
import dev.inmo.kslog.common.filter.filtered
|
|
|
|
|
2023-11-18 11:15:23 +00:00
|
|
|
/**
|
2023-11-18 11:55:19 +00:00
|
|
|
* Logger based on [KSLoggerDefaultPlatformLoggerLambda] or [logging] parameter
|
2023-11-18 11:15:23 +00:00
|
|
|
*
|
|
|
|
* @param defaultTag will be used in case when `tag` parameter in [performLog] omitted
|
|
|
|
* @param messageFormatter special formatter which creating [String] inside of [performLog] for each call. Defaults to
|
|
|
|
* [defaultMessageFormatter]
|
|
|
|
* @param logging target lambda which will be called with a result of [messageFormatter] logs formatting as a message
|
|
|
|
* and tag as tag if not `null` and [defaultTag] otherwise
|
|
|
|
*/
|
2022-06-09 03:56:27 +00:00
|
|
|
class DefaultKSLog(
|
|
|
|
private val defaultTag: String,
|
|
|
|
private val messageFormatter: MessageFormatter = defaultMessageFormatter,
|
2023-11-18 11:55:19 +00:00
|
|
|
private val logging: (level: LogLevel, tag: String, message: Any, throwable: Throwable?) -> Unit = KSLoggerDefaultPlatformLoggerLambda
|
2022-06-09 03:56:27 +00:00
|
|
|
) : KSLog {
|
2022-07-30 08:12:45 +00:00
|
|
|
override fun performLog(level: LogLevel, tag: String?, message: Any, throwable: Throwable?) {
|
2023-11-18 11:55:19 +00:00
|
|
|
val resultTag = tag ?: defaultTag
|
2022-06-09 10:29:56 +00:00
|
|
|
|
2023-11-18 11:55:19 +00:00
|
|
|
val text = messageFormatter(level, resultTag, message, throwable)
|
|
|
|
logging(level, resultTag, text, throwable)
|
2022-06-09 03:56:27 +00:00
|
|
|
}
|
|
|
|
|
2022-07-30 08:12:45 +00:00
|
|
|
override fun performLog(level: LogLevel, tag: String?, throwable: Throwable?, messageBuilder: () -> Any) {
|
2023-11-18 11:55:19 +00:00
|
|
|
val resultTag = tag ?: defaultTag
|
2022-06-09 10:29:56 +00:00
|
|
|
|
2023-11-18 11:55:19 +00:00
|
|
|
val text = messageFormatter(level, resultTag, messageBuilder(), throwable)
|
|
|
|
logging(level, resultTag, text, throwable)
|
2022-06-09 03:56:27 +00:00
|
|
|
}
|
|
|
|
|
2022-06-09 10:29:56 +00:00
|
|
|
override suspend fun performLogS(
|
2022-06-09 03:56:27 +00:00
|
|
|
level: LogLevel,
|
|
|
|
tag: String?,
|
|
|
|
throwable: Throwable?,
|
2022-07-30 08:12:45 +00:00
|
|
|
messageBuilder: suspend () -> Any
|
2022-06-09 03:56:27 +00:00
|
|
|
) {
|
2023-11-18 11:55:19 +00:00
|
|
|
val resultTag = tag ?: defaultTag
|
2022-06-09 10:29:56 +00:00
|
|
|
|
2023-11-18 11:55:19 +00:00
|
|
|
val text = messageFormatter(level, resultTag, messageBuilder(), throwable)
|
|
|
|
logging(level, resultTag, text, throwable)
|
2022-06-09 03:56:27 +00:00
|
|
|
}
|
|
|
|
}
|
2022-07-30 08:56:26 +00:00
|
|
|
|
|
|
|
@Deprecated("Filtering should be replaced with FilterKSLog")
|
|
|
|
fun DefaultKSLog(
|
|
|
|
defaultTag: String,
|
|
|
|
filter: MessageFilter = { _, _, _ -> true },
|
|
|
|
messageFormatter: MessageFormatter = defaultMessageFormatter,
|
2023-11-18 11:55:19 +00:00
|
|
|
logging: (level: LogLevel, tag: String, message: Any, throwable: Throwable?) -> Unit = KSLoggerDefaultPlatformLoggerLambda
|
2022-07-30 08:56:26 +00:00
|
|
|
) = DefaultKSLog(
|
|
|
|
defaultTag, messageFormatter, logging
|
|
|
|
).filtered(filter)
|