diff --git a/e2e/android/app/src/main/java/com/example/androidobservability/BaseApplication.kt b/e2e/android/app/src/main/java/com/example/androidobservability/BaseApplication.kt index de279acd3..13339eaac 100644 --- a/e2e/android/app/src/main/java/com/example/androidobservability/BaseApplication.kt +++ b/e2e/android/app/src/main/java/com/example/androidobservability/BaseApplication.kt @@ -28,7 +28,7 @@ open class BaseApplication : Application() { var observabilityOptions = ObservabilityOptions( resourceAttributes = Attributes.of( - AttributeKey.stringKey("example"), "value" + AttributeKey.stringKey("observabilityOptions.resourceAttributes"), "BaseApplication" ), debug = true, otlpEndpoint = BuildConfig.OTLP_ENDPOINT, diff --git a/e2e/android/app/src/main/java/com/example/androidobservability/ViewModel.kt b/e2e/android/app/src/main/java/com/example/androidobservability/ViewModel.kt index 7dffb6ae2..98c19db8c 100644 --- a/e2e/android/app/src/main/java/com/example/androidobservability/ViewModel.kt +++ b/e2e/android/app/src/main/java/com/example/androidobservability/ViewModel.kt @@ -103,6 +103,8 @@ class ViewModel(application: Application) : AndroidViewModel(application) { newSpan1.makeCurrent().use { val newSpan2 = LDObserve.startSpan("NestedSpan2", Attributes.empty()) newSpan2.makeCurrent().use { + LDObserve.recordCount(Metric("test-counter", 10.0)) + LDObserve.recordLog("NestedLog", Severity.INFO, Attributes.empty()) sendOkHttpRequest() sendURLRequest() newSpan2.end() diff --git a/sdk/@launchdarkly/mobile-dotnet/android/native/LDObserve/src/main/java/com/example/LDObserve/ObservabilityBridge.kt b/sdk/@launchdarkly/mobile-dotnet/android/native/LDObserve/src/main/java/com/example/LDObserve/ObservabilityBridge.kt index e277f8b86..37dea55e8 100644 --- a/sdk/@launchdarkly/mobile-dotnet/android/native/LDObserve/src/main/java/com/example/LDObserve/ObservabilityBridge.kt +++ b/sdk/@launchdarkly/mobile-dotnet/android/native/LDObserve/src/main/java/com/example/LDObserve/ObservabilityBridge.kt @@ -153,7 +153,7 @@ public class ObservabilityBridge( com.launchdarkly.observability.api.ObservabilityOptions( enabled = observability.isEnabled, serviceName = observability.serviceName, - serviceVersion = observabilityVersion, + serviceVersion = observability.serviceVersion, resourceAttributes = resourceAttributes, debug = false, otlpEndpoint = observability.otlpEndpoint, diff --git a/sdk/@launchdarkly/mobile-dotnet/observability/Directory.Build.props b/sdk/@launchdarkly/mobile-dotnet/observability/Directory.Build.props index c2cbc3010..2285cfcbd 100644 --- a/sdk/@launchdarkly/mobile-dotnet/observability/Directory.Build.props +++ b/sdk/@launchdarkly/mobile-dotnet/observability/Directory.Build.props @@ -1,7 +1,7 @@ LaunchDarkly.SessionReplay - 0.5.5 + 0.6.0 false LaunchDarkly LaunchDarkly diff --git a/sdk/@launchdarkly/mobile-dotnet/observability/bridge/LDNative.cs b/sdk/@launchdarkly/mobile-dotnet/observability/bridge/LDNative.cs index 89a1cf767..c7151de47 100644 --- a/sdk/@launchdarkly/mobile-dotnet/observability/bridge/LDNative.cs +++ b/sdk/@launchdarkly/mobile-dotnet/observability/bridge/LDNative.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Reflection; using LaunchDarkly.Observability; @@ -24,13 +25,21 @@ private LDNative(ObservabilityOptions observability, SessionReplayOptions replay Replay = replay; } - public static LDNative Start(string mobileKey, ObservabilityOptions observability, SessionReplayOptions replay) + private static string GetObservabilityVersion() { - var ldNative = new LDNative(observability, replay); var rawVersion = typeof(LDNative).Assembly .GetCustomAttribute() ?.InformationalVersion ?? string.Empty; - var observabilityVersion = rawVersion.Split('+')[0]; + return rawVersion.Split('+')[0]; + } + + public static LDNative Start(string mobileKey, ObservabilityOptions observability, SessionReplayOptions replay) + { + var ldNative = new LDNative(observability, replay); + var observabilityVersion = GetObservabilityVersion(); + observability.Attributes ??= new Dictionary(); + observability.Attributes["maui-observability-version"] = observabilityVersion; + #if ANDROID var app = (Android.App.Application)global::Android.App.Application.Context; var bridge = new ObservabilityBridge(); diff --git a/sdk/@launchdarkly/mobile-dotnet/sample/MainPage.xaml.cs b/sdk/@launchdarkly/mobile-dotnet/sample/MainPage.xaml.cs index 1ce6e5ae5..ce4aeb894 100644 --- a/sdk/@launchdarkly/mobile-dotnet/sample/MainPage.xaml.cs +++ b/sdk/@launchdarkly/mobile-dotnet/sample/MainPage.xaml.cs @@ -197,6 +197,9 @@ await Task.Run(async () => using var span1 = LDObserve.StartActiveSpan("NestedSpan1"); using var span2 = LDObserve.StartActiveSpan("NestedSpan2"); + LDObserve.RecordCount("test-counter", 10.0); + LDObserve.RecordLog("NestedLog", Severity.Info); + try { await _httpClient.GetAsync("https://www.google.com");