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