Feature flag to OTLP tracing

This commit is contained in:
Stefan Ceriu
2023-08-23 19:15:38 +03:00
committed by Stefan Ceriu
parent 63d90eeb3e
commit ecc549b280
12 changed files with 145 additions and 27 deletions
+2 -1
View File
@@ -43,6 +43,7 @@ enum MXLog {
static func configure(target: String? = nil,
logLevel: TracingConfiguration.LogLevel,
otlpConfiguration: OTLPConfiguration? = nil,
redirectToFiles: Bool = Constants.redirectToFiles,
maxLogFileCount: UInt = Constants.maxLogFileCount,
logFileSizeLimit: UInt = Constants.logFilesSizeLimit) {
@@ -58,7 +59,7 @@ enum MXLog {
return
}
setupTracing(configuration: .custom(logLevel: logLevel))
setupTracing(configuration: .custom(logLevel: logLevel), otlpConfiguration: otlpConfiguration)
if let target {
self.target = target
@@ -17,6 +17,12 @@
import Collections
import MatrixRustSDK
struct OTLPConfiguration {
let url: String
let username: String
let password: String
}
// This exposes the full Rust side tracing subscriber filter for more flexibility.
// We can filter by level, crate and even file. See more details here:
// https://docs.rs/tracing-subscriber/0.2.7/tracing_subscriber/filter/struct.EnvFilter.html#examples
@@ -83,6 +89,18 @@ struct TracingConfiguration {
}
}
func setupTracing(configuration: TracingConfiguration) {
setupTracing(config: .init(filter: configuration.filter, writeToStdoutOrSystem: true, writeToFiles: nil))
func setupTracing(configuration: TracingConfiguration, otlpConfiguration: OTLPConfiguration?) {
if let otlpConfiguration {
setupOtlpTracing(config: .init(clientName: "ElementX-iOS",
user: otlpConfiguration.username,
password: otlpConfiguration.password,
otlpEndpoint: otlpConfiguration.url,
filter: configuration.filter,
writeToStdoutOrSystem: true,
writeToFiles: nil))
} else {
setupTracing(config: .init(filter: configuration.filter,
writeToStdoutOrSystem: true,
writeToFiles: nil))
}
}