Skip to content

Ktor Client logging integration #437

@petrchatrny

Description

@petrchatrny

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
        }
    }
}

Metadata

Metadata

Labels

help wantedExtra attention is needed

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions