/*************************************************************************/ public async Task WriteTelemetry(Telemetry telemetry) { await Task.Yield(); switch (telemetry.Type) { case Telemetry.TelemetryType.Error: { var tel = new ExceptionTelemetry(telemetry.Exception); tel.MergeProperties(telemetry, _childrenAsJson); tel.Message = telemetry.Exception.Message; tel.SeverityLevel = (SeverityLevel)((int)telemetry.Severity); SetAttributes(telemetry, tel, tel); _client.TrackException(tel); break; } case Telemetry.TelemetryType.Event: { var tel = new EventTelemetry(telemetry.Message); tel.MergeProperties(telemetry, _childrenAsJson); SetAttributes(telemetry, tel, tel); _client.TrackEvent(tel); break; } case Telemetry.TelemetryType.Metric: { var tel = new MetricTelemetry(telemetry.Message, telemetry.Value); tel.MergeProperties(telemetry, _childrenAsJson); SetAttributes(telemetry, tel, tel); _client.TrackMetric(tel); break; } case Telemetry.TelemetryType.Trace: { var tel = new TraceTelemetry(telemetry.Message, (SeverityLevel)((int)telemetry.Severity)); tel.MergeProperties(telemetry, _childrenAsJson); SetAttributes(telemetry, tel, tel); _client.TrackTrace(tel); break; } case Telemetry.TelemetryType.Request: { var tel = new RequestTelemetry(telemetry.Message, telemetry.Request.StartTime, telemetry.Request.Duration, telemetry.Request.ResponseCode, telemetry.Request.Success); tel.MergeProperties(telemetry, _childrenAsJson); SetAttributes(telemetry, tel, tel); _client.TrackRequest(tel); break; } } _client.Flush(); return; }