我在 kotlin 多平台项目中看不到我的日志

问题描述 投票:0回答:1

我正在开发 kotlin 多平台项目,当我运行项目时我想在日志中看到我的 ktor 响应

低于我的CurrencyApiServiceImpl.kt

数据包data.remote.api

import domain.CurrencyApiService
import domain.model.ApiResponse
import domain.model.Currency
import domain.model.RequestState
import io.ktor.client.HttpClient
import io.ktor.client.call.body
import io.ktor.client.plugins.DefaultRequest
import io.ktor.client.plugins.HttpTimeout
import io.ktor.client.plugins.contentnegotiation.ContentNegotiation
import io.ktor.client.request.get
import io.ktor.client.request.headers
import io.ktor.client.plugins.logging.Logging
import io.ktor.client.plugins.logging.LogLevel
import io.ktor.serialization.kotlinx.json.json
import kotlinx.serialization.json.Json

class CurrencyApiServiceImpl : CurrencyApiService {
    companion object {
        const val ENDPOINT = "https://api.currencyapi.com/v3/latest"
        const val API_KEY = "cur_live_7fIujvQxlDmWLEjp5mo4VrZDvHZ1dMCqm5kkdhPv"
    }

    private val httpClient = HttpClient {
        install(ContentNegotiation) {
            json(Json {
                prettyPrint = true
                isLenient = true
                ignoreUnknownKeys = true
            })
        }
        install(HttpTimeout) {
            requestTimeoutMillis = 15000
        }
        install(DefaultRequest) {
            headers {
                append("apikey", API_KEY)
            }
        }
        install(Logging) {
            logger = object : io.ktor.client.plugins.logging.Logger {
                override fun log(message: String) {
                    println("HTTP Client Log: $message")
                }
            }
            level = LogLevel.ALL
        }
    }

    override suspend fun getLatestExchangeRate(): RequestState<List<Currency>> {
        println("Starting request to $ENDPOINT")
        return try {
            val response = httpClient.get(ENDPOINT)
            println("Received response with status: ${response.status}")
            if (response.status.value == 200) {
                val responseBody = response.body<String>()
                println("Response Body: $responseBody")
                val apiResponse = Json.decodeFromString<ApiResponse>(responseBody)
                println("Successfully parsed API response")
                RequestState.Success(data = apiResponse.data.values.toList())
            } else {
                println("Received HTTP error: ${response.status}")
                RequestState.Error(message = "HTTP Error code ${response.status}")
            }
        } catch (e: Exception) {
            println("Exception occurred during HTTP request: ${e.message}")
            RequestState.Error(message = e.message ?: "Unknown error")
        }
    }
}

我的模型响应课程

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable


@Serializable
data class ApiResponse(
    val metadata:MetaData,
    val data: Map<String, Currency>
)
@Serializable
data class MetaData(
    @SerialName("last_updated_at")
    val lastUpdatedAt: String
)
@Serializable
data class Currency(

    var code: String,
    var value: Double
)

我在日志中看不到结果,我遵循 StackOverflow 答案和教程没有帮助任何帮助,高度赞赏

kotlin logging kotlin-multiplatform ktor
1个回答
0
投票

我通过创建新项目并将现有项目导入其中解决了我的问题

© www.soinside.com 2019 - 2024. All rights reserved.