refactor(logging): use Timber instead of Kermit

Android-only project, so Timber (the de-facto Android logging lib) fits better than the
KMP-oriented Kermit.

- Catalog: kermit -> timber (com.jakewharton.timber:timber 5.0.1).
- core:data: Ktor Logging bridged to Timber; safeCall logs via Timber.
- app: plant Timber.DebugTree() in debug only (buildConfig enabled for BuildConfig.DEBUG).
This commit is contained in:
2026-06-10 12:23:43 +02:00
parent b7ccf2fefa
commit 6a1842ae96
6 changed files with 28 additions and 11 deletions

View File

@@ -4,6 +4,13 @@ plugins {
alias(libs.plugins.architecture.koin)
}
android {
// Needed for BuildConfig.DEBUG (gating the Timber DebugTree).
buildFeatures {
buildConfig = true
}
}
dependencies {
// :app is the only place modules are assembled and the dependency graph is wired.
implementation(project(":core:data"))
@@ -15,6 +22,8 @@ dependencies {
implementation(libs.bundles.lifecycle.compose)
// Material Components — required for the Material3 XML Activity theme.
implementation(libs.material)
// Logging — the DebugTree is planted here; other modules log via Timber's static API.
implementation(libs.timber)
androidTestImplementation(libs.androidx.compose.ui.test.junit4)
debugImplementation(libs.androidx.compose.ui.test.manifest)

View File

@@ -5,6 +5,7 @@ import com.example.architecture.core.data.di.coreDataModule
import org.koin.android.ext.koin.androidContext
import org.koin.android.ext.koin.androidLogger
import org.koin.core.context.startKoin
import timber.log.Timber
/**
* Single Koin entry point. Feature modules append their own `*DataModule` / `*PresentationModule`
@@ -13,6 +14,12 @@ import org.koin.core.context.startKoin
class ArchitectureApp : Application() {
override fun onCreate() {
super.onCreate()
// Plant Timber only in debug; release builds get no logs (swap in a crash-reporting tree).
if (BuildConfig.DEBUG) {
Timber.plant(Timber.DebugTree())
}
startKoin {
androidLogger()
androidContext(this@ArchitectureApp)