PlanTempusApp/Core/Telemetry/SeqLoggingTelemetryChannel.cs

27 lines
819 B
C#

using Microsoft.ApplicationInsights.Channel;
namespace PlanTempus.Core.Telemetry
{
public class SeqLoggingTelemetryChannel : InMemoryChannel, ITelemetryChannel
{
private readonly IMessageChannel<ITelemetry> _messageChannel;
public SeqLoggingTelemetryChannel(IMessageChannel<ITelemetry> messageChannel)
{
_messageChannel = messageChannel;
}
public new void Send(ITelemetry telemetry)
{
var writeTask = _messageChannel.Writer.WriteAsync(telemetry).AsTask();
writeTask.ContinueWith(t =>
{
if (t.Exception != null)
{
throw t.Exception;
}
}, TaskContinuationOptions.OnlyOnFaulted);
base.Send(telemetry);
}
}
}