From 35e3d028372f9073531252dee523964fb39cb43e Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sun, 31 Jul 2022 19:01:25 +0600 Subject: [PATCH 1/7] start 0.4.2 --- CHANGELOG.md | 2 ++ gradle.properties | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e3f7a1..1794c2a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # Changelog +## 0.4.2 + ## 0.4.1 * Fixes in resolution ambiguity for functions with messages diff --git a/gradle.properties b/gradle.properties index 9283f6f..8bba418 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,5 +9,5 @@ android.enableJetifier=true # Project data group=dev.inmo -version=0.4.1 -android_code_version=11 +version=0.4.2 +android_code_version=12 From 0e01534562c6680bc759334a9f38ada15414dd0e Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sun, 31 Jul 2022 19:06:57 +0600 Subject: [PATCH 2/7] setDefaultKSLog and KSLog#plus(KSLog) --- CHANGELOG.md | 3 +++ src/commonMain/kotlin/KSLog.kt | 2 ++ src/commonMain/kotlin/utils/Combination.kt | 9 +++++++++ 3 files changed, 14 insertions(+) create mode 100644 src/commonMain/kotlin/utils/Combination.kt diff --git a/CHANGELOG.md b/CHANGELOG.md index 1794c2a..3b378f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ ## 0.4.2 +* Add `setDefaultKSLog` +* Add `plus` operation for two `KSLog` instances to call them both on each log performing + ## 0.4.1 * Fixes in resolution ambiguity for functions with messages diff --git a/src/commonMain/kotlin/KSLog.kt b/src/commonMain/kotlin/KSLog.kt index be76ca4..7d67fe5 100644 --- a/src/commonMain/kotlin/KSLog.kt +++ b/src/commonMain/kotlin/KSLog.kt @@ -110,3 +110,5 @@ fun KSLog( ).filtered { l, _, _ -> minLoggingLevel.ordinal <= l.ordinal } + +fun setDefaultKSLog(newDefault: KSLog) { KSLog.default = newDefault } diff --git a/src/commonMain/kotlin/utils/Combination.kt b/src/commonMain/kotlin/utils/Combination.kt new file mode 100644 index 0000000..9e43fd1 --- /dev/null +++ b/src/commonMain/kotlin/utils/Combination.kt @@ -0,0 +1,9 @@ +package dev.inmo.kslog.common.utils + +import dev.inmo.kslog.common.CallbackKSLog +import dev.inmo.kslog.common.KSLog + +infix operator fun KSLog.plus(other: KSLog) = CallbackKSLog { l, t, m, e -> + this@plus.performLog(l, t, m, e) + other.performLog(l, t, m, e) +} From 3ff5d989b7f9f4ba595450ac90780c0e55b26fdf Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sun, 31 Jul 2022 19:09:01 +0600 Subject: [PATCH 3/7] KSLog(SimpleKSLogCallback) --- CHANGELOG.md | 1 + src/commonMain/kotlin/CallbackKSLog.kt | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b378f1..507e6ce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ * Add `setDefaultKSLog` * Add `plus` operation for two `KSLog` instances to call them both on each log performing +* Add `KSLog` factory for simple creation of `CallbackKSLog` ## 0.4.1 diff --git a/src/commonMain/kotlin/CallbackKSLog.kt b/src/commonMain/kotlin/CallbackKSLog.kt index 7d64495..4a43b34 100644 --- a/src/commonMain/kotlin/CallbackKSLog.kt +++ b/src/commonMain/kotlin/CallbackKSLog.kt @@ -7,3 +7,7 @@ class CallbackKSLog( ) : KSLog { override fun performLog(level: LogLevel, tag: String?, message: Any, throwable: Throwable?) = performLogCallback(level, tag, message, throwable) } + +fun KSLog( + performLogCallback: SimpleKSLogCallback +) = CallbackKSLog(performLogCallback) From 34ea0bd91ad9d74dd7adc8e281ed17b701387f79 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sun, 31 Jul 2022 19:13:02 +0600 Subject: [PATCH 4/7] isolate logging of KSLog'gers to avoid problems with parallel logs perform --- src/commonMain/kotlin/utils/Combination.kt | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/commonMain/kotlin/utils/Combination.kt b/src/commonMain/kotlin/utils/Combination.kt index 9e43fd1..cee2897 100644 --- a/src/commonMain/kotlin/utils/Combination.kt +++ b/src/commonMain/kotlin/utils/Combination.kt @@ -4,6 +4,12 @@ import dev.inmo.kslog.common.CallbackKSLog import dev.inmo.kslog.common.KSLog infix operator fun KSLog.plus(other: KSLog) = CallbackKSLog { l, t, m, e -> - this@plus.performLog(l, t, m, e) - other.performLog(l, t, m, e) + val resultOfFirst = runCatching { + this@plus.performLog(l, t, m, e) + } + val resultOfSecond = runCatching { + other.performLog(l, t, m, e) + } + resultOfFirst.onFailure { throw it } + resultOfSecond.onFailure { throw it } } From 194e52f5215f3b80290939fdfcc6370bb7d89311 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sun, 31 Jul 2022 19:15:53 +0600 Subject: [PATCH 5/7] addDefaultKSLog --- CHANGELOG.md | 2 +- src/commonMain/kotlin/KSLog.kt | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 507e6ce..9978448 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## 0.4.2 -* Add `setDefaultKSLog` +* Add `setDefaultKSLog` and `addDefaultKSLog` * Add `plus` operation for two `KSLog` instances to call them both on each log performing * Add `KSLog` factory for simple creation of `CallbackKSLog` diff --git a/src/commonMain/kotlin/KSLog.kt b/src/commonMain/kotlin/KSLog.kt index 7d67fe5..40d8270 100644 --- a/src/commonMain/kotlin/KSLog.kt +++ b/src/commonMain/kotlin/KSLog.kt @@ -1,6 +1,7 @@ package dev.inmo.kslog.common import dev.inmo.kslog.common.filter.filtered +import dev.inmo.kslog.common.utils.plus enum class LogLevel { @@ -112,3 +113,4 @@ fun KSLog( } fun setDefaultKSLog(newDefault: KSLog) { KSLog.default = newDefault } +fun addDefaultKSLog(newDefault: KSLog) { KSLog.default = KSLog.default + newDefault } From 77ca9ce25b4a6870af833501b3107a4609154857 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sun, 31 Jul 2022 19:19:17 +0600 Subject: [PATCH 6/7] MessageFormatter factory --- CHANGELOG.md | 1 + src/commonMain/kotlin/KSLogTypealiases.kt | 2 ++ 2 files changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9978448..2062367 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ * Add `setDefaultKSLog` and `addDefaultKSLog` * Add `plus` operation for two `KSLog` instances to call them both on each log performing * Add `KSLog` factory for simple creation of `CallbackKSLog` +* Add `MessageFormatter` factory ## 0.4.1 diff --git a/src/commonMain/kotlin/KSLogTypealiases.kt b/src/commonMain/kotlin/KSLogTypealiases.kt index d36b5a1..1a8fb1d 100644 --- a/src/commonMain/kotlin/KSLogTypealiases.kt +++ b/src/commonMain/kotlin/KSLogTypealiases.kt @@ -1,6 +1,8 @@ package dev.inmo.kslog.common typealias MessageFormatter = (l: LogLevel, t: String, m: Any, Throwable?) -> String +@Suppress("NOTHING_TO_INLINE") +inline fun MessageFormatter(noinline formatter: MessageFormatter) = formatter typealias MessageFilter = (l: LogLevel, t: String?, Throwable?) -> Boolean val defaultMessageFormatter: MessageFormatter = { l, t, m, _ -> "[$l] $t - $m" } From 66c5451293a7155931e6446d4f00d0dd9193e9fc Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sun, 31 Jul 2022 19:22:08 +0600 Subject: [PATCH 7/7] now tag in MessageFormatter is a nullable --- src/commonMain/kotlin/KSLogTypealiases.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/commonMain/kotlin/KSLogTypealiases.kt b/src/commonMain/kotlin/KSLogTypealiases.kt index 1a8fb1d..0e2b5c8 100644 --- a/src/commonMain/kotlin/KSLogTypealiases.kt +++ b/src/commonMain/kotlin/KSLogTypealiases.kt @@ -1,8 +1,8 @@ package dev.inmo.kslog.common -typealias MessageFormatter = (l: LogLevel, t: String, m: Any, Throwable?) -> String +typealias MessageFormatter = (l: LogLevel, t: String?, m: Any, Throwable?) -> String @Suppress("NOTHING_TO_INLINE") inline fun MessageFormatter(noinline formatter: MessageFormatter) = formatter typealias MessageFilter = (l: LogLevel, t: String?, Throwable?) -> Boolean -val defaultMessageFormatter: MessageFormatter = { l, t, m, _ -> "[$l] $t - $m" } +val defaultMessageFormatter: MessageFormatter = { l, t, m, _ -> "[$l] ${t ?.let { "$it " } ?: ""}- $m" }