Setup tracing

This commit is contained in:
ganfra 2022-12-02 12:04:24 +01:00
parent 029d97aaf8
commit aa40dcf05b
2 changed files with 58 additions and 1 deletions

View file

@ -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)
}

View file

@ -0,0 +1,50 @@
package io.element.android.x.matrix.tracing
data class TracingConfiguration(
val common: LogLevel = LogLevel.Warn,
val targets: Map<Target, LogLevel> = 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
)
)
}