diff --git a/Supabase/src/commonMain/kotlin/io/github/jan/supabase/SupabaseClient.kt b/Supabase/src/commonMain/kotlin/io/github/jan/supabase/SupabaseClient.kt index 4348480bc..061c6c156 100644 --- a/Supabase/src/commonMain/kotlin/io/github/jan/supabase/SupabaseClient.kt +++ b/Supabase/src/commonMain/kotlin/io/github/jan/supabase/SupabaseClient.kt @@ -73,19 +73,20 @@ interface SupabaseClient { companion object { /** - * The default logging level used for plugins. Can be changed within the [SupabaseClientBuilder] + * The default minimum logging level used for plugins. Can be changed within the [SupabaseClientBuilder] */ var DEFAULT_LOG_LEVEL = LogLevel.INFO internal set - val LOGGER = createLogger("Supabase-Core") + val LOGGER: SupabaseLogger = createLogger("Supabase-Core") /** * Creates a new [SupabaseLogger] using the [KermitSupabaseLogger] implementation. * @param tag The tag for the logger * @param level The logging level. If set to null, the [DEFAULT_LOG_LEVEL] property will be used instead */ - fun createLogger(tag: String, level: LogLevel? = null) = KermitSupabaseLogger(level, tag) + fun createLogger(tag: String, level: LogLevel? = null): SupabaseLogger = + KermitSupabaseLogger(level ?: DEFAULT_LOG_LEVEL, tag) } diff --git a/Supabase/src/commonMain/kotlin/io/github/jan/supabase/logging/SupabaseLogger.kt b/Supabase/src/commonMain/kotlin/io/github/jan/supabase/logging/SupabaseLogger.kt index fc73b3702..27f4cbbcf 100644 --- a/Supabase/src/commonMain/kotlin/io/github/jan/supabase/logging/SupabaseLogger.kt +++ b/Supabase/src/commonMain/kotlin/io/github/jan/supabase/logging/SupabaseLogger.kt @@ -3,7 +3,6 @@ package io.github.jan.supabase.logging import co.touchlab.kermit.Logger import co.touchlab.kermit.Severity import io.github.jan.supabase.SupabaseClient -import io.github.jan.supabase.annotations.SupabaseInternal /** * An interface for logging in Supabase plugins. @@ -11,7 +10,7 @@ import io.github.jan.supabase.annotations.SupabaseInternal abstract class SupabaseLogger { /** - * The log level for this logger. If null, the [SupabaseClient.DEFAULT_LOG_LEVEL] will be used. + * The minimum log level to handle for this logger. If null, the [SupabaseClient.DEFAULT_LOG_LEVEL] will be used. */ abstract val level: LogLevel? @@ -35,37 +34,29 @@ abstract class SupabaseLogger { } } - /** - * Set the log level for this logger - * @param level The log level - */ - @SupabaseInternal - abstract fun setLevel(level: LogLevel) - } /** * A logger implementation using the Kermit logger. - * @param level The log level for this logger. If null, the [SupabaseClient.DEFAULT_LOG_LEVEL] will be used. + * @param level The minimum log level for this logger. * @param tag The tag for this logger * @param logger The Kermit logger */ -class KermitSupabaseLogger(level: LogLevel?, tag: String, private val logger: Logger = Logger.withTag(tag)): - SupabaseLogger() { - - override var level: LogLevel? = level - private set - - @SupabaseInternal - override fun setLevel(level: LogLevel) { - this.level = level +internal class KermitSupabaseLogger( + override val level: LogLevel, + tag: String, + private val logger: Logger = Logger.withTag(tag) +) : SupabaseLogger() { + + init { + logger.mutableConfig.minSeverity = level.toSeverity() } - override fun log(level: LogLevel, throwable: Throwable?, message: String) { + override fun log(level: LogLevel, throwable: Throwable?, message: String) { logger.log(level.toSeverity(), logger.tag, throwable, message) } - private fun LogLevel.toSeverity() = when(this) { + private fun LogLevel.toSeverity() = when (this) { LogLevel.DEBUG -> Severity.Debug LogLevel.INFO -> Severity.Info LogLevel.WARNING -> Severity.Warn diff --git a/Supabase/src/commonMain/kotlin/io/github/jan/supabase/plugins/SupabasePluginProvider.kt b/Supabase/src/commonMain/kotlin/io/github/jan/supabase/plugins/SupabasePluginProvider.kt index 87437fee1..cf90bfc58 100644 --- a/Supabase/src/commonMain/kotlin/io/github/jan/supabase/plugins/SupabasePluginProvider.kt +++ b/Supabase/src/commonMain/kotlin/io/github/jan/supabase/plugins/SupabasePluginProvider.kt @@ -35,11 +35,4 @@ interface SupabasePluginProvider */ fun create(supabaseClient: SupabaseClient, config: Config) : PluginInstance - /** - * Updates the plugin's log level - */ - fun setLogLevel(level: LogLevel) { - logger.setLevel(level) - } - }