36 lines
No EOL
1.2 KiB
C#
36 lines
No EOL
1.2 KiB
C#
using Microsoft.ApplicationInsights;
|
|
using Microsoft.ApplicationInsights.Channel;
|
|
|
|
namespace SWP.Core.Telemetry
|
|
{
|
|
public class SeqTelemetryChannel(IMessageChannel<ITelemetry> 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<string, string> { { "OmitSeqTelemetryChannel", "true" } });
|
|
}
|
|
|
|
base.Send(telemetry);
|
|
}
|
|
}
|
|
} |