internal static TelemetryEvent ToTelemetry(Data data, string source, PackageSource packageSource, string parentId) { if (data.Metadata.EventTiming.Requests == 0 && data.Nupkg.EventTiming.Requests == 0) { return(null); } var telemetry = new TelemetryEvent(EventName, new Dictionary <string, object>() { { PropertyNames.ParentId, parentId }, }); // source info telemetry.AddPiiData(PropertyNames.Source.Url, source); if (packageSource == null) { packageSource = new PackageSource(source); } if (packageSource.IsHttp) { telemetry[PropertyNames.Source.Type] = "http"; telemetry[PropertyNames.Source.Protocol] = TelemetryUtility.IsHttpV3(packageSource) ? 3 : packageSource.ProtocolVersion; } else { telemetry[PropertyNames.Source.Type] = "local"; telemetry[PropertyNames.Source.Protocol] = packageSource.ProtocolVersion; } var msFeed = GetMsFeed(packageSource); if (msFeed != null) { telemetry[PropertyNames.Source.MSFeed] = msFeed; } AddResourceProperties(telemetry, data.Metadata, PropertyNames.Metadata); AddResourceProperties(telemetry, data.Nupkg, PropertyNames.Nupkg); ResourceData all = CalculateTotal(data.Metadata, data.Nupkg); AddResourceProperties(telemetry, all, PropertyNames.All); return(telemetry); }
/// <summary> Records error information when the given task faults. </summary> /// <param name="joinableTask"> Joinable task to execute. </param> /// <param name="callerClassName"> Caller class name. </param> /// <param name="callerMemberName"> Caller member name. </param> public static void PostOnFailure(this JoinableTask joinableTask, string callerClassName, [CallerMemberName] string callerMemberName = null) { JoinableTask forget = NuGetUIThreadHelper.JoinableTaskFactory.RunAsync(async() => { try { #pragma warning disable VSTHRD003 // Avoid awaiting foreign Tasks - As a fire-and-forget continuation, deadlocks can't happen. await joinableTask.Task.ConfigureAwait(false); #pragma warning restore VSTHRD003 } catch (Exception e) { await TelemetryUtility.PostFaultAsync(e, callerClassName, callerMemberName); } }); }
public async Task PostFaultAsync(Exception e, string callerClassName, [CallerMemberName] string callerMemberName = null, IDictionary <string, object> extraProperties = null) { await TelemetryUtility.PostFaultAsync(e, callerClassName, callerMemberName, extraProperties); }