diff --git a/libraries/matrix/src/main/java/io/element/android/x/matrix/MatrixInstance.kt b/libraries/matrix/src/main/java/io/element/android/x/matrix/MatrixInstance.kt index c1f86dcb1d..b7173b0b2b 100644 --- a/libraries/matrix/src/main/java/io/element/android/x/matrix/MatrixInstance.kt +++ b/libraries/matrix/src/main/java/io/element/android/x/matrix/MatrixInstance.kt @@ -2,6 +2,9 @@ package io.element.android.x.matrix import android.annotation.SuppressLint import android.content.Context +import io.element.android.x.matrix.tracing.TracingConfigurations +import io.element.android.x.matrix.tracing.setupTracing +import io.element.android.x.sdk.matrix.BuildConfig import kotlinx.coroutines.CoroutineScope @@ -10,7 +13,11 @@ object MatrixInstance { private lateinit var instance: Matrix fun init(context: Context, coroutineScope: CoroutineScope) { - //setupTracing("warn,matrix_sdk::sliding_sync=info") + if (BuildConfig.DEBUG) { + setupTracing(TracingConfigurations.debug) + } else { + setupTracing(TracingConfigurations.release) + } instance = Matrix(coroutineScope, context) } diff --git a/libraries/matrix/src/main/java/io/element/android/x/matrix/tracing/TracingConfiguration.kt b/libraries/matrix/src/main/java/io/element/android/x/matrix/tracing/TracingConfiguration.kt new file mode 100644 index 0000000000..947bff09f5 --- /dev/null +++ b/libraries/matrix/src/main/java/io/element/android/x/matrix/tracing/TracingConfiguration.kt @@ -0,0 +1,50 @@ +package io.element.android.x.matrix.tracing + +data class TracingConfiguration( + val common: LogLevel = LogLevel.Warn, + val targets: Map = emptyMap() +) { + + val filter = "$common,${ + targets.map { "${it.key.filter}=${it.value.filter}" }.joinToString(separator = ",") + }" + + + sealed class Target(open val filter: String) { + object Hyper : Target("hyper") + object Sled : Target("sled") + sealed class MatrixSdk(override val filter: String) : Target(filter) { + object Root : MatrixSdk("matrix_sdk") + object Sled : MatrixSdk("matrix_sdk_sled") + object FFI : MatrixSdk("matrix_sdk_ffi") + object HttpClient : MatrixSdk("matrix_sdk::http_client") + object UniffiAPI : MatrixSdk("matrix_sdk_ffi::uniffi_api") + object SlidingSync : MatrixSdk("matrix_sdk::sliding_sync") + object BaseSlidingSync : MatrixSdk("matrix_sdk_base::sliding_sync") + } + } + + sealed class LogLevel(val filter: String) { + object Warn : LogLevel("warn") + object Trace : LogLevel("trace") + object Info : LogLevel("info") + object Debug : LogLevel("debug") + object Error : LogLevel("error") + } + +} + +fun setupTracing(tracingConfiguration: TracingConfiguration) { + org.matrix.rustcomponents.sdk.setupTracing(tracingConfiguration.filter) +} + +object TracingConfigurations { + val release = TracingConfiguration(common = TracingConfiguration.LogLevel.Info) + val debug = TracingConfiguration() + val full = TracingConfiguration( + common = TracingConfiguration.LogLevel.Info, + targets = mapOf( + TracingConfiguration.Target.Sled to TracingConfiguration.LogLevel.Warn + ) + ) +} \ No newline at end of file