in code/src/CoreTemplateStudio/CoreTemplateStudio.Core/Diagnostics/TelemetryTracker.cs [176:235]
private async Task TrackProjectAsync(GenStatusEnum status, string templateName, UserSelectionContext context, Guid vsProjectId, GenItemsTelemetryData genItemsTelemetryData = null, double? timeSpent = null, Dictionary<ProjectMetricsEnum, double> performanceCounters = null, CreationResultStatus genStatus = CreationResultStatus.Success, string message = "")
{
// TODO: Remove TelemetryProperties.Framework and use TelemetryProperties.FrontendFramework
var properties = new Dictionary<string, string>()
{
{ TelemetryProperties.Status, status.ToString() },
{ TelemetryProperties.ProjectType, context.ProjectType },
{ TelemetryProperties.Framework, context.FrontEndFramework },
{ TelemetryProperties.FrontendFramework, context.FrontEndFramework },
{ TelemetryProperties.BackendFramework, context.BackEndFramework },
{ TelemetryProperties.TemplateName, templateName },
{ TelemetryProperties.GenEngineStatus, genStatus.ToString() },
{ TelemetryProperties.GenEngineMessage, message },
{ TelemetryProperties.EventName, TelemetryEvents.ProjectGen },
{ TelemetryProperties.Language, context.Language },
{ TelemetryProperties.VisualStudioActiveProjectGuid, vsProjectId.ToString() },
{ TelemetryProperties.VsProjectCategory, context.Platform },
};
AddPropertiesFromPropertyBag(context, properties);
var metrics = new Dictionary<string, double>();
if (genItemsTelemetryData.PagesCount.HasValue)
{
metrics.Add(TelemetryMetrics.PagesCount, genItemsTelemetryData.PagesCount.Value);
}
if (genItemsTelemetryData.FeaturesCount.HasValue)
{
metrics.Add(TelemetryMetrics.FeaturesCount, genItemsTelemetryData.FeaturesCount.Value);
}
if (genItemsTelemetryData.ServicesCount.HasValue)
{
metrics.Add(TelemetryMetrics.ServicesCount, genItemsTelemetryData.ServicesCount.Value);
}
if (genItemsTelemetryData.TestingCount.HasValue)
{
metrics.Add(TelemetryMetrics.TestingCount, genItemsTelemetryData.TestingCount.Value);
}
if (timeSpent.HasValue)
{
metrics.Add(TelemetryMetrics.TimeSpent, timeSpent.Value);
}
if (performanceCounters != null)
{
foreach (var perfCounter in performanceCounters)
{
metrics.Add(TelemetryMetrics.ProjectMetricsTimeSpent + perfCounter.Key.ToString(), perfCounter.Value);
}
}
GenContext.ToolBox.Shell.Telemetry.SafeTrackProjectVsTelemetry(properties, genItemsTelemetryData.PageIdentities, genItemsTelemetryData.FeatureIdentities, genItemsTelemetryData.ServiceIdentities, genItemsTelemetryData.TestingIdentities, metrics, status == GenStatusEnum.Completed);
await TelemetryService.Current.TrackEventAsync(TelemetryEvents.ProjectGen, properties, metrics).ConfigureAwait(false);
}