Kermit
Kermit copied to clipboard
Ktor Client logging integration
I was thinking about adding an extension for Ktor Client. It is almost the same integration as for the Koin library. Ktor also has its own logger, so it could be done very similarly. For more information see ktor docs.
Logger:
import io.ktor.client.plugins.logging.Logger as KtorLogger
import co.touchlab.kermit.Logger as KermitLogger
class KermitKtorLogger(private val logger: KermitLogger) : KtorLogger {
override fun log(message: String) {
logger.i(message)
}
}
Usage:
import co.touchlab.kermit.Logger
import io.ktor.client.HttpClient
import io.ktor.client.engine.java.Java
import io.ktor.client.plugins.logging.LogLevel
import io.ktor.client.plugins.logging.Logging
class KtorClient {
val httpClient = HttpClient(Java) {
install(Logging) {
logger = KermitKtorLogger(Logger.withTag("Ktor"))
level = LogLevel.INFO
}
}
}
I think this sounds like a good extension. If you create a PR please follow the patterns established for the koin extension. Also consider supporting a configurable log level (maybe just a constructor param with a default of "info"