Skip to content
This repository was archived by the owner on Jun 21, 2023. It is now read-only.

Commit 171a340

Browse files
Refactor UsageTracker
Modified it to have independent Microsoft and GitHub metrics recording methods. These methods will catch and log any exception with either system. Co-authored-by: Alex Panov <[email protected]>
1 parent e60fea8 commit 171a340

File tree

1 file changed

+34
-9
lines changed

1 file changed

+34
-9
lines changed

src/GitHub.VisualStudio/Services/UsageTracker.cs

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -62,19 +62,44 @@ public async Task IncrementCounter(Expression<Func<UsageModel.MeasuresModel, int
6262
var propertyInfo = (PropertyInfo)property.Member;
6363
var eventName = propertyInfo.Name;
6464
log.Verbose("Increment counter {Name}", eventName);
65-
var value = (int)propertyInfo.GetValue(usage.Measures);
66-
propertyInfo.SetValue(usage.Measures, value + 1);
67-
await service.WriteLocalData(data);
6865

69-
const string numberOfPrefix = "numberof";
70-
if (eventName.IndexOf(numberOfPrefix, StringComparison.InvariantCultureIgnoreCase) != -1)
66+
await ReportGitHubMetrics(propertyInfo, eventName, usage, data);
67+
68+
ReportMicrosoftTelemetry(eventName);
69+
}
70+
71+
static void ReportMicrosoftTelemetry(string eventName)
72+
{
73+
try
74+
{
75+
const string numberOfPrefix = "numberof";
76+
if (eventName.IndexOf(numberOfPrefix, StringComparison.InvariantCultureIgnoreCase) != -1)
77+
{
78+
eventName = eventName.Substring(numberOfPrefix.Length);
79+
}
80+
81+
var operation = new TelemetryEvent(EventNameBase + eventName);
82+
operation.Properties[PropertyBase + TelemetryVersionProperty] = TelemetryVersion;
83+
TelemetryService.DefaultSession.PostEvent(operation);
84+
}
85+
catch (Exception e)
7186
{
72-
eventName = eventName.Substring(numberOfPrefix.Length);
87+
log.Error(e, "Error recording Microsoft Telmetry");
7388
}
89+
}
7490

75-
var operation = new OperationEvent(EventNameBase + eventName, TelemetryResult.Success);
76-
operation.Properties[PropertyBase + TelemetryVersionProperty] = TelemetryVersion;
77-
TelemetryService.DefaultSession.PostEvent(operation);
91+
async Task ReportGitHubMetrics(PropertyInfo propertyInfo, string eventName, UsageModel usage, UsageData data)
92+
{
93+
try
94+
{
95+
var value = (int) propertyInfo.GetValue(usage.Measures);
96+
propertyInfo.SetValue(usage.Measures, value + 1);
97+
await service.WriteLocalData(data);
98+
}
99+
catch (Exception e)
100+
{
101+
log.Error(e, "Error recording GitHub Metrics");
102+
}
78103
}
79104

80105
IDisposable StartTimer()

0 commit comments

Comments
 (0)