Beispiel #1
0
        public void LogEvent(PythonLogEvent logEvent, object argument) {
            var dictArgument = argument as IDictionary<string, object>;

            switch (logEvent) {
                case PythonLogEvent.Launch:
                    if (((LaunchInfo)argument).IsDebug) {
                        _debugLaunchCount++;
                    } else {
                        _normalLaunchCount++;
                    }
                    break;
                case PythonLogEvent.InstalledInterpreters:
                    _installedInterpreters = (int)dictArgument["Total"];
                    _installedV2 = (int)dictArgument["2x"];
                    _installedV3 = (int)dictArgument["3x"];
                    break;
                case PythonLogEvent.PythonPackage:
                    _seenPackages.Add(argument as PackageInfo);
                    break;
                case PythonLogEvent.AnalysisCompleted:
                    _analysisInfo.Add(argument as AnalysisInfo);
                    break;
                case PythonLogEvent.AnalysisExitedAbnormally:
                case PythonLogEvent.AnalysisOperationCancelled:
                case PythonLogEvent.AnalysisOperationFailed:
                case PythonLogEvent.AnalysisWarning:
                    _analysisAbnormalities.Add("[{0}] {1}: {2}".FormatInvariant(DateTime.Now, logEvent, argument as string ?? ""));
                    break;
            }
        }
Beispiel #2
0
        public void LogEvent(PythonLogEvent logEvent, object argument)
        {
            switch (logEvent)
            {
            case PythonLogEvent.Launch:
                if ((int)argument != 0)
                {
                    _debugLaunchCount++;
                }
                else
                {
                    _normalLaunchCount++;
                }
                break;

            case PythonLogEvent.InstalledInterpreters:
                _installedInterpreters = (int)argument;
                break;

            case PythonLogEvent.ConfiguredInterpreters:
                _configuredInterpreters = (int)argument;
                break;

            case PythonLogEvent.PackageInstalled:
                var packageInstallDetails = argument as PackageInstallDetails;
                if (packageInstallDetails != null)
                {
                    _packageInstalls.Add(packageInstallDetails);
                }
                break;
            }
        }
Beispiel #3
0
 public void LogEvent(PythonLogEvent logEvent, object argument)
 {
     if (_traceSource != null)
     {
         _traceSource.TraceEvent(TraceEventType.Information, (int)TraceEventType.Information, $"{Enum.GetName(typeof(PythonLogEvent), logEvent)}:{argument?.ToString()}");
     }
 }
Beispiel #4
0
 public void LogEvent(PythonLogEvent logEvent, object data = null)
 {
     foreach (var logger in _loggers)
     {
         logger.LogEvent(logEvent, data);
     }
 }
Beispiel #5
0
        public void LogEvent(PythonLogEvent logEvent, object argument)
        {
            var session = _session.Value;

            // No session is not a fatal error
            if (session == null)
            {
                return;
            }

            // Never send events when users have not opted in.
            if (!session.IsOptedIn)
            {
                return;
            }

            var evt   = new TelemetryEvent(EventPrefix + logEvent.ToString());
            var props = PythonToolsLoggerData.AsDictionary(argument);

            if (props != null)
            {
                foreach (var kv in props)
                {
                    evt.Properties[PropertyPrefix + kv.Key] = kv.Value;
                }
            }
            else if (argument != null)
            {
                evt.Properties[PropertyPrefix + "Value"] = argument;
            }

            session.PostEvent(evt);
        }
Beispiel #6
0
        public void LogEvent(PythonLogEvent logEvent, object argument) {
            var session = _session.Value;
            // No session is not a fatal error
            if (session == null) {
                return;
            }

            // Never send events when users have not opted in.
            if (!session.IsOptedIn) {
                return;
            }

            // Certain events are not collected
            switch (logEvent) {
                case PythonLogEvent.AnalysisWarning:
                case PythonLogEvent.AnalysisOperationFailed:
                case PythonLogEvent.AnalysisOperationCancelled:
                case PythonLogEvent.AnalysisExitedAbnormally:
                    return;
            }

            var evt = new TelemetryEvent(EventPrefix + logEvent.ToString());
            var props = PythonToolsLoggerData.AsDictionary(argument);
            if (props != null) {
                foreach (var kv in props) {
                    evt.Properties[PropertyPrefix + kv.Key] = kv.Value;
                }
            } else if (argument != null) {
                evt.Properties[PropertyPrefix + "Value"] = argument;
            }

            session.PostEvent(evt);
        }
Beispiel #7
0
        public void LogEvent(PythonLogEvent logEvent, object argument)
        {
            var dictArgument = argument as IDictionary <string, object>;

            switch (logEvent)
            {
            case PythonLogEvent.Launch:
                if (((LaunchInfo)argument).IsDebug)
                {
                    _debugLaunchCount++;
                }
                else
                {
                    _normalLaunchCount++;
                }
                break;

            case PythonLogEvent.InstalledInterpreters:
                _installedInterpreters = (int)dictArgument["Total"];
                _installedV2           = (int)dictArgument["2x"];
                _installedV3           = (int)dictArgument["3x"];
                break;

            case PythonLogEvent.PythonPackage:
                lock (_seenPackages) {
                    _seenPackages.Add(argument as PackageInfo);
                }
                break;

            case PythonLogEvent.AnalysisCompleted:
                lock (_analysisInfo) {
                    _analysisInfo.Add(argument as AnalysisInfo);
                }
                break;

            case PythonLogEvent.AnalysisExitedAbnormally:
            case PythonLogEvent.AnalysisOperationCancelled:
            case PythonLogEvent.AnalysisOperationFailed:
            case PythonLogEvent.AnalysisWarning:
                lock (_analysisAbnormalities) {
                    _analysisAbnormalities.Add("[{0}] {1}: {2}".FormatInvariant(DateTime.Now, logEvent, argument as string ?? ""));
                }
                break;

            case PythonLogEvent.AnalysisRequestTiming:
                lock (_analysisTiming) {
                    var a = (AnalysisTimingInfo)argument;
                    if (_analysisTiming.ContainsKey(a.RequestName))
                    {
                        var t = _analysisTiming[a.RequestName];
                        _analysisTiming[a.RequestName] = Tuple.Create(t.Item1 + 1, Math.Max(t.Item2, a.Milliseconds), t.Item3 + a.Milliseconds, t.Item4 + (a.Timeout ? 1 : 0));
                    }
                    else
                    {
                        _analysisTiming[a.RequestName] = Tuple.Create(1, a.Milliseconds, (long)a.Milliseconds, a.Timeout ? 1 : 0);
                    }
                }
                break;
            }
        }
Beispiel #8
0
 public void LogEvent(PythonLogEvent logEvent, object argument) {
     switch (logEvent) {
         case PythonLogEvent.Launch:
             if ((int)argument != 0) {
                 _debugLaunchCount++;
             } else {
                 _normalLaunchCount++;
             }
             break;
         case PythonLogEvent.InstalledInterpreters:
             _installedInterpreters = (int)argument;
             break;
         case PythonLogEvent.ConfiguredInterpreters:
             _configuredInterpreters = (int)argument;
             break;
         case PythonLogEvent.PackageInstalled:
             var packageInstallDetails = argument as PackageInstallDetails;
             if (packageInstallDetails != null) {
                 _packageInstalls.Add(packageInstallDetails);
             }
             break;
         case PythonLogEvent.AnalysisExitedAbnormally:
             _analysisAbnormalities.Add(DateTime.Now + " Abnormal exit: " + argument);
             break;
         case PythonLogEvent.AnalysisOperationCancelled:
             _analysisAbnormalities.Add(DateTime.Now + " Operation Cancelled");
             break;
         case PythonLogEvent.AnalysisOperationFailed:
             _analysisAbnormalities.Add(DateTime.Now + " Operation Failed " + argument);
             break;
     }
 }
Beispiel #9
0
 public void LogEvent(PythonLogEvent logEvent, object argument)
 {
     switch (logEvent)
     {
     case PythonLogEvent.AnalysisExitedAbnormally:
     case PythonLogEvent.AnalysisOperationFailed:
         ActivityLog.TryLogError("Python", "[{0}] {1}: {2}".FormatInvariant(DateTime.Now, logEvent, argument as string ?? ""));
         break;
     }
 }
Beispiel #10
0
        public void LogEvent(PythonLogEvent logEvent, object argument)
        {
            var session = _session.Value;

            // No session is not a fatal error
            if (session == null)
            {
                return;
            }

            // Never send events when users have not opted in.
            if (!session.IsOptedIn)
            {
                return;
            }

            // Certain events are not collected
            switch (logEvent)
            {
            case PythonLogEvent.AnalysisWarning:
            case PythonLogEvent.AnalysisOperationFailed:
            case PythonLogEvent.AnalysisOperationCancelled:
            case PythonLogEvent.AnalysisExitedAbnormally:
                return;

            case PythonLogEvent.PythonPackage:
                lock (_seenPackages) {
                    var name = (argument as PackageInfo)?.Name;
                    // Don't send empty or repeated names
                    if (string.IsNullOrEmpty(name) || !_seenPackages.Add(name))
                    {
                        return;
                    }
                }
                break;
            }

            var evt   = new TelemetryEvent(EventPrefix + logEvent.ToString());
            var props = PythonToolsLoggerData.AsDictionary(argument);

            if (props != null)
            {
                foreach (var kv in props)
                {
                    evt.Properties[PropertyPrefix + kv.Key] = kv.Value;
                }
            }
            else if (argument != null)
            {
                evt.Properties[PropertyPrefix + "Value"] = argument;
            }

            session.PostEvent(evt);
        }
Beispiel #11
0
        public void LogEvent(PythonLogEvent logEvent, object argument)
        {
            var dictArgument = argument as IDictionary <string, object>;

            switch (logEvent)
            {
            case PythonLogEvent.Launch:
                if (((LaunchInfo)argument).IsDebug)
                {
                    _debugLaunchCount++;
                }
                else
                {
                    _normalLaunchCount++;
                }
                break;

            case PythonLogEvent.InstalledInterpreters:
                _installedInterpreters = (int)dictArgument["Total"];
                _installedV2           = (int)dictArgument["2x"];
                _installedV3           = (int)dictArgument["3x"];
                break;

            case PythonLogEvent.PythonPackage:
                lock (_seenPackages) {
                    _seenPackages.Add(argument as PackageInfo);
                }
                break;

            case PythonLogEvent.AnalysisCompleted:
                lock (_analysisInfo) {
                    _analysisInfo.Add(argument as AnalysisInfo);
                }
                break;

            case PythonLogEvent.AnalysisExitedAbnormally:
            case PythonLogEvent.AnalysisOperationCancelled:
            case PythonLogEvent.AnalysisOperationFailed:
            case PythonLogEvent.AnalysisWarning:
                lock (_analysisAbnormalities) {
                    _analysisAbnormalities.Add("[{0}] {1}: {2}".FormatInvariant(DateTime.Now, logEvent, argument as string ?? ""));
                }
                break;
            }
        }
Beispiel #12
0
        public void LogEvent(PythonLogEvent logEvent, object argument)
        {
            switch (logEvent)
            {
            case PythonLogEvent.Launch:
                if ((int)argument != 0)
                {
                    _debugLaunchCount++;
                }
                else
                {
                    _normalLaunchCount++;
                }
                break;

            case PythonLogEvent.InstalledInterpreters:
                _installedInterpreters = (int)argument;
                break;

            case PythonLogEvent.ConfiguredInterpreters:
                _configuredInterpreters = (int)argument;
                break;

            case PythonLogEvent.PackageInstalled:
                var packageInstallDetails = argument as PackageInstallDetails;
                if (packageInstallDetails != null)
                {
                    _packageInstalls.Add(packageInstallDetails);
                }
                break;

            case PythonLogEvent.AnalysisExitedAbnormally:
                _analysisAbnormalities.Add(DateTime.Now + " Abnormal exit: " + argument);
                break;

            case PythonLogEvent.AnalysisOperationCancelled:
                _analysisAbnormalities.Add(DateTime.Now + " Operation Cancelled");
                break;

            case PythonLogEvent.AnalysisOpertionFailed:
                _analysisAbnormalities.Add(DateTime.Now + " Operation Failed " + argument);
                break;
            }
        }
Beispiel #13
0
        public void LogEvent(PythonLogEvent logEvent, object argument)
        {
            var dictArgument = argument as IDictionary <string, object>;

            switch (logEvent)
            {
            case PythonLogEvent.Launch:
                if ((int)argument != 0)
                {
                    _debugLaunchCount++;
                }
                else
                {
                    _normalLaunchCount++;
                }
                break;

            case PythonLogEvent.InstalledInterpreters:
                _installedInterpreters = (int)dictArgument["Total"];
                _installedV2           = (int)dictArgument["2x"];
                _installedV3           = (int)dictArgument["3x"];
                break;

            case PythonLogEvent.PythonPackage:
                _seenPackages.Add(argument as PackageInfo);
                break;

            case PythonLogEvent.AnalysisCompleted:
                _analysisInfo.Add(argument as AnalysisInfo);
                break;

            case PythonLogEvent.AnalysisExitedAbnormally:
                _analysisAbnormalities.Add(DateTime.Now + " Abnormal exit: " + argument);
                break;

            case PythonLogEvent.AnalysisOperationCancelled:
                _analysisAbnormalities.Add(DateTime.Now + " Operation Cancelled");
                break;

            case PythonLogEvent.AnalysisOperationFailed:
                _analysisAbnormalities.Add(DateTime.Now + " Operation Failed " + argument);
                break;
            }
        }
        public void LogEvent(PythonLogEvent logEvent, object argument)
        {
            var session = _session.Value;

            // No session is not a fatal error
            if (session == null)
            {
                return;
            }

            // Never send events when users have not opted in.
            if (!session.IsOptedIn)
            {
                return;
            }

            // Certain events are not collected
            switch (logEvent)
            {
            case PythonLogEvent.AnalysisWarning:
            case PythonLogEvent.AnalysisOperationFailed:
            case PythonLogEvent.AnalysisOperationCancelled:
            case PythonLogEvent.AnalysisExitedAbnormally:
                return;
            }

            var evt   = new TelemetryEvent(EventPrefix + logEvent.ToString());
            var props = PythonToolsLoggerData.AsDictionary(argument);

            if (props != null)
            {
                foreach (var kv in props)
                {
                    evt.Properties[PropertyPrefix + kv.Key] = kv.Value;
                }
            }
            else if (argument != null)
            {
                evt.Properties[PropertyPrefix + "Value"] = argument;
            }

            session.PostEvent(evt);
        }
Beispiel #15
0
        public void LogEvent(PythonLogEvent logEvent, object argument)
        {
            var dictArgument = argument as IDictionary <string, object>;

            switch (logEvent)
            {
            case PythonLogEvent.Launch:
                if (((LaunchInfo)argument).IsDebug)
                {
                    _debugLaunchCount++;
                }
                else
                {
                    _normalLaunchCount++;
                }
                break;

            case PythonLogEvent.InstalledInterpreters:
                _installedInterpreters = (int)dictArgument["Total"];
                _installedV2           = (int)dictArgument["2x"];
                _installedV3           = (int)dictArgument["3x"];
                break;

            case PythonLogEvent.PythonPackage:
                lock (_seenPackages) {
                    _seenPackages.Add(argument as PackageInfo);
                }
                break;

            case PythonLogEvent.DebugAdapterConnectionTimeout:
                if ((string)argument == "Launch")
                {
                    _debugAdapterLaunchTimeoutCount++;
                }
                else
                {
                    _debugAdapterAttachTimeoutCount++;
                }
                break;
            }
        }
Beispiel #16
0
 public void LogEvent(PythonLogEvent logEvent, object argument) {
     switch (logEvent) {
         case PythonLogEvent.Launch:
             if ((int)argument != 0) {
                 _debugLaunchCount++;
             } else {
                 _normalLaunchCount++;
             }
             break;
         case PythonLogEvent.InstalledInterpreters:
             _installedInterpreters = (int)argument;
             break;
         case PythonLogEvent.ConfiguredInterpreters:
             _configuredInterpreters = (int)argument;
             break;
         case PythonLogEvent.PackageInstalled:
             var packageInstallDetails = argument as PackageInstallDetails;
             if (packageInstallDetails != null) {
                 _packageInstalls.Add(packageInstallDetails);
             }
             break;
     }
 }
Beispiel #17
0
        public void LogEvent(PythonLogEvent logEvent, object argument)
        {
            var dictArgument = argument as IDictionary <string, object>;

            switch (logEvent)
            {
            case PythonLogEvent.Launch:
                if (((LaunchInfo)argument).IsDebug)
                {
                    _debugLaunchCount++;
                }
                else
                {
                    _normalLaunchCount++;
                }
                break;

            case PythonLogEvent.InstalledInterpreters:
                _installedInterpreters = (int)dictArgument["Total"];
                _installedV2           = (int)dictArgument["2x"];
                _installedV3           = (int)dictArgument["3x"];
                break;

            case PythonLogEvent.PythonPackage:
                lock (_seenPackages) {
                    _seenPackages.Add(argument as PackageInfo);
                }
                break;

            case PythonLogEvent.AnalysisCompleted:
                lock (_analysisInfo) {
                    _analysisInfo.Add(argument as AnalysisInfo);
                }
                break;

            case PythonLogEvent.AnalysisExitedAbnormally:
            case PythonLogEvent.AnalysisOperationCancelled:
            case PythonLogEvent.AnalysisOperationFailed:
            case PythonLogEvent.AnalysisWarning:
                lock (_analysisAbnormalities) {
                    _analysisAbnormalities.Add("[{0}] {1}: {2}".FormatInvariant(DateTime.Now, logEvent, argument as string ?? ""));
                }
                break;

            case PythonLogEvent.AnalysisRequestTiming:
                lock (_analysisTiming) {
                    var a = (AnalysisTimingInfo)argument;
                    if (_analysisTiming.ContainsKey(a.RequestName))
                    {
                        var t = _analysisTiming[a.RequestName];
                        _analysisTiming[a.RequestName] = Tuple.Create(t.Item1 + 1, Math.Max(t.Item2, a.Milliseconds), t.Item3 + a.Milliseconds, t.Item4 + (a.Timeout ? 1 : 0));
                    }
                    else
                    {
                        _analysisTiming[a.RequestName] = Tuple.Create(1, a.Milliseconds, (long)a.Milliseconds, a.Timeout ? 1 : 0);
                    }
                }
                break;

            case PythonLogEvent.AnalysisRequestSummary:
                lock (_analysisCount) {
                    var a = (Dictionary <string, object>)argument;
                    foreach (var kv in a)
                    {
                        if (kv.Value is long l)
                        {
                            long existing;
                            _analysisCount.TryGetValue(kv.Key, out existing);
                            _analysisCount[kv.Key] = existing + l;
                        }
                    }
                }
                break;

            case PythonLogEvent.GetExpressionAtPoint:
                lock (_analysisTiming) {
                    var a = (GetExpressionAtPointInfo)argument;
                    if (_analysisTiming.ContainsKey("GetExpressionAtPoint"))
                    {
                        var t = _analysisTiming["GetExpressionAtPoint"];
                        _analysisTiming["GetExpressionAtPoint"] = Tuple.Create(t.Item1 + 1, Math.Max(t.Item2, a.Milliseconds), t.Item3 + a.Milliseconds, t.Item4 + (a.Success ? 0 : 1));
                    }
                    else
                    {
                        _analysisTiming["GetExpressionAtPoint"] = Tuple.Create(1, a.Milliseconds, (long)a.Milliseconds, a.Success ? 0 : 1);
                    }
                }
                break;

            case PythonLogEvent.DebugAdapterConnectionTimeout:
                if ((string)argument == "Launch")
                {
                    _debugAdapterLaunchTimeoutCount++;
                }
                else
                {
                    _debugAdapterAttachTimeoutCount++;
                }
                break;
            }
        }
Beispiel #18
0
 public void LogEvent(PythonLogEvent logEvent, object data = null) {
     foreach (var logger in _loggers) {
         logger.LogEvent(logEvent, data);
     }
 }