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:
commit
6d6be64311
3 changed files with 16 additions and 2 deletions
|
|
@ -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.core.meta.BuildMeta
|
||||||
import io.element.android.libraries.designsystem.utils.snackbar.SnackbarDispatcher
|
import io.element.android.libraries.designsystem.utils.snackbar.SnackbarDispatcher
|
||||||
import io.element.android.libraries.di.AppScope
|
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.matrix.api.tracing.TracingService
|
||||||
import io.element.android.libraries.preferences.api.store.AppPreferencesStore
|
import io.element.android.libraries.preferences.api.store.AppPreferencesStore
|
||||||
import io.element.android.services.analytics.api.AnalyticsService
|
import io.element.android.services.analytics.api.AnalyticsService
|
||||||
|
|
@ -40,5 +41,7 @@ interface AppBindings {
|
||||||
|
|
||||||
fun enterpriseService(): EnterpriseService
|
fun enterpriseService(): EnterpriseService
|
||||||
|
|
||||||
|
fun featureFlagService(): FeatureFlagService
|
||||||
|
|
||||||
fun buildMeta(): BuildMeta
|
fun buildMeta(): BuildMeta
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,9 +12,9 @@ import android.system.Os
|
||||||
import androidx.startup.Initializer
|
import androidx.startup.Initializer
|
||||||
import io.element.android.features.rageshake.api.reporter.BugReporter
|
import io.element.android.features.rageshake.api.reporter.BugReporter
|
||||||
import io.element.android.libraries.architecture.bindings
|
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.TracingConfiguration
|
||||||
import io.element.android.libraries.matrix.api.tracing.WriteToFilesConfiguration
|
import io.element.android.libraries.matrix.api.tracing.WriteToFilesConfiguration
|
||||||
import io.element.android.x.BuildConfig
|
|
||||||
import io.element.android.x.di.AppBindings
|
import io.element.android.x.di.AppBindings
|
||||||
import kotlinx.coroutines.flow.first
|
import kotlinx.coroutines.flow.first
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
|
|
@ -29,9 +29,10 @@ class TracingInitializer : Initializer<Unit> {
|
||||||
val bugReporter = appBindings.bugReporter()
|
val bugReporter = appBindings.bugReporter()
|
||||||
Timber.plant(tracingService.createTimberTree(ELEMENT_X_TARGET))
|
Timber.plant(tracingService.createTimberTree(ELEMENT_X_TARGET))
|
||||||
val preferencesStore = appBindings.preferencesStore()
|
val preferencesStore = appBindings.preferencesStore()
|
||||||
|
val featureFlagService = appBindings.featureFlagService()
|
||||||
val logLevel = runBlocking { preferencesStore.getTracingLogLevelFlow().first() }
|
val logLevel = runBlocking { preferencesStore.getTracingLogLevelFlow().first() }
|
||||||
val tracingConfiguration = TracingConfiguration(
|
val tracingConfiguration = TracingConfiguration(
|
||||||
writesToLogcat = BuildConfig.DEBUG,
|
writesToLogcat = runBlocking { featureFlagService.isFeatureEnabled(FeatureFlags.PrintLogsToLogcat) },
|
||||||
writesToFilesConfiguration = defaultWriteToDiskConfiguration(bugReporter),
|
writesToFilesConfiguration = defaultWriteToDiskConfiguration(bugReporter),
|
||||||
logLevel = logLevel,
|
logLevel = logLevel,
|
||||||
extraTargets = listOf(ELEMENT_X_TARGET),
|
extraTargets = listOf(ELEMENT_X_TARGET),
|
||||||
|
|
|
||||||
|
|
@ -168,4 +168,14 @@ enum class FeatureFlags(
|
||||||
defaultValue = { true },
|
defaultValue = { true },
|
||||||
isFinished = false,
|
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,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue