コード例 #1
0
        internal static void LogDebuggingSessionTelemetry(DebuggingSessionTelemetry.Data debugSessionData, Action <FunctionId, LogMessage> log, Func <int> getNextId)
        {
            const string SessionId     = nameof(SessionId);
            const string EditSessionId = nameof(EditSessionId);

            var debugSessionId = getNextId();

            log(FunctionId.Debugging_EncSession, KeyValueLogMessage.Create(map =>
            {
                map[SessionId]           = debugSessionId;
                map["SessionCount"]      = debugSessionData.EditSessionData.Length;
                map["EmptySessionCount"] = debugSessionData.EmptyEditSessionCount;
            }));

            foreach (var editSessionData in debugSessionData.EditSessionData)
            {
                var editSessionId = getNextId();

                log(FunctionId.Debugging_EncSession_EditSession, KeyValueLogMessage.Create(map =>
                {
                    map[SessionId]     = debugSessionId;
                    map[EditSessionId] = editSessionId;

                    map["HadCompilationErrors"]         = editSessionData.HadCompilationErrors;
                    map["HadRudeEdits"]                 = editSessionData.HadRudeEdits;
                    map["HadValidChanges"]              = editSessionData.HadValidChanges;
                    map["HadValidInsignificantChanges"] = editSessionData.HadValidInsignificantChanges;

                    map["RudeEditsCount"]        = editSessionData.RudeEdits.Length;
                    map["EmitDeltaErrorIdCount"] = editSessionData.EmitErrorIds.Length;
                }));

                foreach (var errorId in editSessionData.EmitErrorIds)
                {
                    log(FunctionId.Debugging_EncSession_EditSession_EmitDeltaErrorId, KeyValueLogMessage.Create(map =>
                    {
                        map[SessionId]     = debugSessionId;
                        map[EditSessionId] = editSessionId;
                        map["ErrorId"]     = errorId;
                    }));
                }

                foreach (var(editKind, syntaxKind) in editSessionData.RudeEdits)
                {
                    log(FunctionId.Debugging_EncSession_EditSession_RudeEdit, KeyValueLogMessage.Create(map =>
                    {
                        map[SessionId]     = debugSessionId;
                        map[EditSessionId] = editSessionId;

                        map["RudeEditKind"]       = editKind;
                        map["RudeEditSyntaxKind"] = syntaxKind;
                        map["RudeEditBlocking"]   = editSessionData.HadRudeEdits;
                    }));
                }
            }
        }
コード例 #2
0
 private static void ReportTelemetry(DebuggingSessionTelemetry.Data data)
 {
     // report telemetry (fire and forget):
     _ = Task.Run(() => LogDebuggingSessionTelemetry(data, Logger.Log, LogAggregator.GetNextId));
 }