Compose Multiplatform 入門(ロギング編)
みなさんこんにちは。今回はCompose Multiplatform入門記事の第4回目です。
今回はロギングのマルチプラットフォーム対応をしていきたいと思います。
これまでのCompose Multiplatform入門記事はこちら。
Compose Multiplatform入門(環境構築編)
Compose Multiplatform入門(プロジェクト作成編)
Compose Multiplatform入門(画面遷移編)
Kermitを使用したロギング
マルチプラットフォーム開発でのロギングは、各プラットフォームごとにログを出力する機能が違うので苦労しがちですが、KermitというKotlin向けのマルチプラットフォームロギングライブラリを使用すれば、その悩みは一発で解消できます。https://kermit.touchlab.co/
環境構築
まずはKermitを使えるようにするために、libs.versions.toml
、build.gradle.kts
に記述していきます。記述が完了したら、Gradleの同期を忘れずに行いましょう。
libs.versions.toml
[versions]
kermit = "2.0.3"
[libraries]
kermit = { module = "co.touchlab:kermit", version.ref = "kermit" }
build.gradle.kts
kotlin {
sourceSets {
commonMain.dependencies {
implementation(libs.kermit)
}
}
}
実際に使ってみる
前回新しく作成したAnotherScreenにログを入れて、AnotherScreenが開かれたときにログを出力するようにしてみましょう。AnotherScreen.kt
package ui.screens.another
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.material.Button
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import cafe.adriel.voyager.core.screen.Screen
import cafe.adriel.voyager.koin.getScreenModel
import cafe.adriel.voyager.navigator.LocalNavigator
import cafe.adriel.voyager.navigator.currentOrThrow
import co.touchlab.kermit.Logger
import org.koin.core.parameter.parametersOf
class AnotherScreen(private val postId: String) : Screen {
@Composable
override fun Content() {
val viewModel = getScreenModel{ parametersOf(postId) }
val navigator = LocalNavigator.currentOrThrow
LifecycleEffect(
onStarted = { Logger.i { "Open Another Screen" } }
)
Column(Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) {
Text(text = viewModel.postId)
Button(onClick = { navigator.pop() }) {
Text("戻る")
}
}
}
}
出力先
実行して画面遷移を行うと、Androidの場合はLogcatに出力されます。iOSの場合は、OSLogに出力されます。