提交 8adebab9 编写于 作者: J Jonathon Marolf

do not use correlatio id as VsTelemetry will insert a session ID automatically.

上级 7d5969ba
...@@ -11,8 +11,7 @@ namespace Microsoft.CodeAnalysis ...@@ -11,8 +11,7 @@ namespace Microsoft.CodeAnalysis
{ {
internal class LinkedFileDiffMergingLogger internal class LinkedFileDiffMergingLogger
{ {
private const string Id = nameof(Id); private static LogAggregator LogAggregator = new LogAggregator();
private static ConcurrentDictionary<int, LogAggregator> LogAggregators = new ConcurrentDictionary<int, LogAggregator>();
internal enum MergeInfo internal enum MergeInfo
{ {
...@@ -31,98 +30,70 @@ internal static void LogSession(Workspace workspace, LinkedFileDiffMergingSessio ...@@ -31,98 +30,70 @@ internal static void LogSession(Workspace workspace, LinkedFileDiffMergingSessio
{ {
if (sessionInfo.LinkedFileGroups.Count > 1) if (sessionInfo.LinkedFileGroups.Count > 1)
{ {
int correlationId = GetCorrelationId(workspace); LogNewSessionWithLinkedFiles();
LogNumberOfLinkedFileGroupsProcessed(sessionInfo.LinkedFileGroups.Count);
LogNewSessionWithLinkedFiles(correlationId);
LogNumberOfLinkedFileGroupsProcessed(correlationId, sessionInfo.LinkedFileGroups.Count);
foreach (var groupInfo in sessionInfo.LinkedFileGroups) foreach (var groupInfo in sessionInfo.LinkedFileGroups)
{ {
LogNumberOfIdenticalDiffs(correlationId, groupInfo.IdenticalDiffs); LogNumberOfIdenticalDiffs(groupInfo.IdenticalDiffs);
LogNumberOfIsolatedDiffs(correlationId, groupInfo.IsolatedDiffs); LogNumberOfIsolatedDiffs(groupInfo.IsolatedDiffs);
LogNumberOfOverlappingDistinctDiffs(correlationId, groupInfo.OverlappingDistinctDiffs); LogNumberOfOverlappingDistinctDiffs(groupInfo.OverlappingDistinctDiffs);
LogNumberOfOverlappingDistinctDiffsWithSameSpan(correlationId, groupInfo.OverlappingDistinctDiffsWithSameSpan); LogNumberOfOverlappingDistinctDiffsWithSameSpan(groupInfo.OverlappingDistinctDiffsWithSameSpan);
LogNumberOfOverlappingDistinctDiffsWithSameSpanAndSubstringRelation(correlationId, groupInfo.OverlappingDistinctDiffsWithSameSpanAndSubstringRelation); LogNumberOfOverlappingDistinctDiffsWithSameSpanAndSubstringRelation(groupInfo.OverlappingDistinctDiffsWithSameSpanAndSubstringRelation);
LogNumberOfInsertedMergeConflictComments(correlationId, groupInfo.InsertedMergeConflictComments); LogNumberOfInsertedMergeConflictComments(groupInfo.InsertedMergeConflictComments);
LogNumberOfInsertedMergeConflictCommentsAtAdjustedLocation(correlationId, groupInfo.InsertedMergeConflictCommentsAtAdjustedLocation); LogNumberOfInsertedMergeConflictCommentsAtAdjustedLocation(groupInfo.InsertedMergeConflictCommentsAtAdjustedLocation);
if (groupInfo.InsertedMergeConflictComments > 0 || if (groupInfo.InsertedMergeConflictComments > 0 ||
groupInfo.InsertedMergeConflictCommentsAtAdjustedLocation > 0) groupInfo.InsertedMergeConflictCommentsAtAdjustedLocation > 0)
{ {
Logger.Log(FunctionId.Workspace_Solution_LinkedFileDiffMergingSession_LinkedFileGroup, SessionLogMessage.Create(correlationId, groupInfo)); Logger.Log(FunctionId.Workspace_Solution_LinkedFileDiffMergingSession_LinkedFileGroup, SessionLogMessage.Create(groupInfo));
} }
} }
} }
} }
private static int GetCorrelationId(Workspace workspace) private static void LogNewSessionWithLinkedFiles() =>
{ Log((int)MergeInfo.SessionsWithLinkedFiles, 1);
int correlationId = workspace.GetHashCode();
if (!LogAggregators.Keys.Contains(correlationId))
{
LogAggregators.TryAdd(correlationId, new LogAggregator());
}
return correlationId;
}
private static void LogNewSessionWithLinkedFiles(int correlationId) =>
Log(correlationId, (int)MergeInfo.SessionsWithLinkedFiles, 1);
private static void LogNumberOfLinkedFileGroupsProcessed(int correlationId, int linkedFileGroupsProcessed) =>
Log(correlationId, (int)MergeInfo.LinkedFileGroupsProcessed, linkedFileGroupsProcessed);
private static void LogNumberOfIdenticalDiffs(int correlationId, int identicalDiffs) => private static void LogNumberOfLinkedFileGroupsProcessed(int linkedFileGroupsProcessed) =>
Log(correlationId, (int)MergeInfo.IdenticalDiffs, identicalDiffs); Log((int)MergeInfo.LinkedFileGroupsProcessed, linkedFileGroupsProcessed);
private static void LogNumberOfIsolatedDiffs(int correlationId, int isolatedDiffs) => private static void LogNumberOfIdenticalDiffs(int identicalDiffs) =>
Log(correlationId, (int)MergeInfo.IsolatedDiffs, isolatedDiffs); Log((int)MergeInfo.IdenticalDiffs, identicalDiffs);
private static void LogNumberOfOverlappingDistinctDiffs(int correlationId, int overlappingDistinctDiffs) => private static void LogNumberOfIsolatedDiffs(int isolatedDiffs) =>
Log(correlationId, (int)MergeInfo.OverlappingDistinctDiffs, overlappingDistinctDiffs); Log((int)MergeInfo.IsolatedDiffs, isolatedDiffs);
private static void LogNumberOfOverlappingDistinctDiffsWithSameSpan(int correlationId, int overlappingDistinctDiffsWithSameSpan) => private static void LogNumberOfOverlappingDistinctDiffs(int overlappingDistinctDiffs) =>
Log(correlationId, (int)MergeInfo.OverlappingDistinctDiffsWithSameSpan, overlappingDistinctDiffsWithSameSpan); Log((int)MergeInfo.OverlappingDistinctDiffs, overlappingDistinctDiffs);
private static void LogNumberOfOverlappingDistinctDiffsWithSameSpanAndSubstringRelation(int correlationId, int overlappingDistinctDiffsWithSameSpanAndSubstringRelation) => private static void LogNumberOfOverlappingDistinctDiffsWithSameSpan(int overlappingDistinctDiffsWithSameSpan) =>
Log(correlationId, (int)MergeInfo.OverlappingDistinctDiffsWithSameSpanAndSubstringRelation, overlappingDistinctDiffsWithSameSpanAndSubstringRelation); Log((int)MergeInfo.OverlappingDistinctDiffsWithSameSpan, overlappingDistinctDiffsWithSameSpan);
private static void LogNumberOfInsertedMergeConflictComments(int correlationId, int insertedMergeConflictComments) => private static void LogNumberOfOverlappingDistinctDiffsWithSameSpanAndSubstringRelation(int overlappingDistinctDiffsWithSameSpanAndSubstringRelation) =>
Log(correlationId, (int)MergeInfo.InsertedMergeConflictComments, insertedMergeConflictComments); Log((int)MergeInfo.OverlappingDistinctDiffsWithSameSpanAndSubstringRelation, overlappingDistinctDiffsWithSameSpanAndSubstringRelation);
private static void LogNumberOfInsertedMergeConflictCommentsAtAdjustedLocation(int correlationId, int insertedMergeConflictCommentsAtAdjustedLocation) => private static void LogNumberOfInsertedMergeConflictComments(int insertedMergeConflictComments) =>
Log(correlationId, (int)MergeInfo.InsertedMergeConflictCommentsAtAdjustedLocation, insertedMergeConflictCommentsAtAdjustedLocation); Log((int)MergeInfo.InsertedMergeConflictComments, insertedMergeConflictComments);
private static void Log(int correlationId, int mergeInfo, int count) private static void LogNumberOfInsertedMergeConflictCommentsAtAdjustedLocation(int insertedMergeConflictCommentsAtAdjustedLocation) =>
{ Log((int)MergeInfo.InsertedMergeConflictCommentsAtAdjustedLocation, insertedMergeConflictCommentsAtAdjustedLocation);
LogAggregators[correlationId].IncreaseCountBy(mergeInfo, count);
}
internal static void ReportTelemetry(int correlationId) private static void Log(int mergeInfo, int count)
{ {
if (LogAggregators.ContainsKey(correlationId)) LogAggregator.IncreaseCountBy(mergeInfo, count);
{
Logger.Log(FunctionId.Workspace_Solution_LinkedFileDiffMergingSession, KeyValueLogMessage.Create(m =>
{
m[Id] = correlationId;
foreach (var kv in LogAggregators[correlationId])
{
var mergeInfo = ((MergeInfo)kv.Key).ToString("f");
m[mergeInfo] = kv.Value.GetCount();
}
}));
LogAggregator value;
LogAggregators.TryRemove(correlationId, out value);
}
} }
internal static void ReportTelemetry() internal static void ReportTelemetry()
{ {
foreach (var correlationId in LogAggregators.Keys) Logger.Log(FunctionId.Workspace_Solution_LinkedFileDiffMergingSession, KeyValueLogMessage.Create(m =>
{ {
ReportTelemetry(correlationId); foreach (var kv in LogAggregator)
} {
var mergeInfo = ((MergeInfo)kv.Key).ToString("f");
m[mergeInfo] = kv.Value.GetCount();
}
}));
} }
private static class SessionLogMessage private static class SessionLogMessage
...@@ -130,12 +101,10 @@ private static class SessionLogMessage ...@@ -130,12 +101,10 @@ private static class SessionLogMessage
private const string LinkedDocuments = nameof(LinkedDocuments); private const string LinkedDocuments = nameof(LinkedDocuments);
private const string DocumentsWithChanges = nameof(DocumentsWithChanges); private const string DocumentsWithChanges = nameof(DocumentsWithChanges);
public static KeyValueLogMessage Create(int correlationId, LinkedFileGroupSessionInfo groupInfo) public static KeyValueLogMessage Create(LinkedFileGroupSessionInfo groupInfo)
{ {
return KeyValueLogMessage.Create(m => return KeyValueLogMessage.Create(m =>
{ {
m[Id] = correlationId;
m[LinkedDocuments] = groupInfo.LinkedDocuments; m[LinkedDocuments] = groupInfo.LinkedDocuments;
m[DocumentsWithChanges] = groupInfo.DocumentsWithChanges; m[DocumentsWithChanges] = groupInfo.DocumentsWithChanges;
m[MergeInfo.IdenticalDiffs.ToString("f")] = groupInfo.IdenticalDiffs; m[MergeInfo.IdenticalDiffs.ToString("f")] = groupInfo.IdenticalDiffs;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册