using Microsoft.ApplicationInsights; using Microsoft.ApplicationInsights.Channel; namespace SWP.Core.Telemetry { public class SeqTelemetryChannel(IMessageChannel messageChannel, TelemetryClient telemetryClient) : InMemoryChannel, ITelemetryChannel { public new void Send(ITelemetry telemetry) { if (telemetry.Context.GlobalProperties.TryGetValue("OmitSeqTelemetryChannel", out var value)) if (value == "true") { base.Send(telemetry); return; } try { var writeTask = messageChannel.Writer.WriteAsync(telemetry).AsTask(); writeTask.ContinueWith(t => { if (t.Exception != null) throw t.Exception; }, TaskContinuationOptions.OnlyOnFaulted); } catch (Exception e) { telemetryClient.TrackException(e, new Dictionary { { "OmitSeqTelemetryChannel", "true" } }); } base.Send(telemetry); } } }