Skip to content

Fix min loglevel #951

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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)

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,14 @@ 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.
*/
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?

Expand All @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,4 @@ interface SupabasePluginProvider<Config, PluginInstance : SupabasePlugin<Config>
*/
fun create(supabaseClient: SupabaseClient, config: Config) : PluginInstance

/**
* Updates the plugin's log level
*/
fun setLogLevel(level: LogLevel) {
logger.setLevel(level)
}

}
Loading