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); }
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); }
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); }