예제 #1
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);
        }
예제 #2
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);
        }
예제 #3
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);
        }