Merge pull request #4402 from element-hq/misc/enable-logcat-in-all-builds

Add feature flag to let the application prints logs to logcat in release builds.
This commit is contained in:
Benoit Marty 2025-03-14 11:33:57 +01:00 committed by GitHub
commit 4a2a675e69
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 16 additions and 2 deletions

View file

@ -16,6 +16,7 @@ import io.element.android.features.rageshake.api.reporter.BugReporter
import io.element.android.libraries.core.meta.BuildMeta
import io.element.android.libraries.designsystem.utils.snackbar.SnackbarDispatcher
import io.element.android.libraries.di.AppScope
import io.element.android.libraries.featureflag.api.FeatureFlagService
import io.element.android.libraries.matrix.api.tracing.TracingService
import io.element.android.libraries.preferences.api.store.AppPreferencesStore
import io.element.android.services.analytics.api.AnalyticsService
@ -40,5 +41,7 @@ interface AppBindings {
fun enterpriseService(): EnterpriseService
fun featureFlagService(): FeatureFlagService
fun buildMeta(): BuildMeta
}

View file

@ -12,9 +12,9 @@ import android.system.Os
import androidx.startup.Initializer
import io.element.android.features.rageshake.api.reporter.BugReporter
import io.element.android.libraries.architecture.bindings
import io.element.android.libraries.featureflag.api.FeatureFlags
import io.element.android.libraries.matrix.api.tracing.TracingConfiguration
import io.element.android.libraries.matrix.api.tracing.WriteToFilesConfiguration
import io.element.android.x.BuildConfig
import io.element.android.x.di.AppBindings
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.runBlocking
@ -29,9 +29,10 @@ class TracingInitializer : Initializer<Unit> {
val bugReporter = appBindings.bugReporter()
Timber.plant(tracingService.createTimberTree(ELEMENT_X_TARGET))
val preferencesStore = appBindings.preferencesStore()
val featureFlagService = appBindings.featureFlagService()
val logLevel = runBlocking { preferencesStore.getTracingLogLevelFlow().first() }
val tracingConfiguration = TracingConfiguration(
writesToLogcat = BuildConfig.DEBUG,
writesToLogcat = runBlocking { featureFlagService.isFeatureEnabled(FeatureFlags.PrintLogsToLogcat) },
writesToFilesConfiguration = defaultWriteToDiskConfiguration(bugReporter),
logLevel = logLevel,
extraTargets = listOf(ELEMENT_X_TARGET),

View file

@ -168,4 +168,14 @@ enum class FeatureFlags(
defaultValue = { true },
isFinished = false,
),
PrintLogsToLogcat(
key = "feature.print_logs_to_logcat",
title = "Print logs to logcat",
description = "Print logs to logcat in addition to log files. Requires an app restart to take effect." +
"\n\nWARNING: this will make the logs visible in the device logs and may affect performance. " +
"It's not intended for daily usage in release builds.",
defaultValue = { buildMeta -> buildMeta.buildType != BuildType.RELEASE },
// False so it's displayed in the developer options screen
isFinished = false,
)
}