private static ulong ParseUInt64(IHeadersCollection headers, string headerName) { var headerValues = headers.GetValues(headerName).ToList(); if (headerValues.Count > 0) { foreach (string headerValue in headerValues) { if (ulong.TryParse(headerValue, NumberStyles, InvariantCulture, out var result)) { return(result); } } Log.Information("Could not parse {0} headers: {1}", headerName, string.Join(",", headerValues)); } return(0); }
public static IApiRequestFactory Get(TracerSettings settings) { var strategy = settings.TracesTransport?.ToUpperInvariant(); switch (strategy) { case DatadogTcp: Log.Information("Using {0} for trace transport.", nameof(TcpStreamFactory)); return(new HttpStreamRequestFactory(new TcpStreamFactory(settings.AgentUri.Host, settings.AgentUri.Port), new DatadogHttpClient())); case DatadogNamedPipes: Log.Information("Using {0} for trace transport, with pipe name {1} and timeout {2}ms.", nameof(NamedPipeClientStreamFactory), settings.TracesPipeName, settings.TracesPipeTimeoutMs); return(new HttpStreamRequestFactory(new NamedPipeClientStreamFactory(settings.TracesPipeName, settings.TracesPipeTimeoutMs), new DatadogHttpClient())); default: // Defer decision to Api logic return(null); } }
private static ulong ParseUInt64(object headers, string headerName) { if (headers.CallMethod <string, bool>("Contains", headerName).Value) { var headerValues = headers.CallMethod <string, IEnumerable <string> >("GetValues", headerName).Value; if (headerValues != null && headerValues.Any()) { foreach (string headerValue in headerValues) { if (ulong.TryParse(headerValue, NumberStyles, InvariantCulture, out var result)) { return(result); } } Log.Information("Could not parse {0} headers: {1}", headerName, string.Join(",", headerValues)); } } return(0); }
private void RefreshCounter(string instanceName) { try { var newCounter = new PerformanceCounter(_categoryName, _counterName, instanceName, readOnly: true); var oldCounter = Interlocked.Exchange(ref _counter, newCounter); oldCounter?.Dispose(); } catch (Exception ex) { Log.Information(ex, "Error while renewing counter"); } }
private static ulong ParseUInt64 <T>(T headers, string headerName) where T : IHeadersCollection { var headerValues = headers.GetValues(headerName); bool hasValue = false; foreach (string headerValue in headerValues) { if (ulong.TryParse(headerValue, NumberStyles, InvariantCulture, out var result)) { return(result); } hasValue = true; } if (hasValue) { Log.Information("Could not parse {0} headers: {1}", headerName, string.Join(",", headerValues)); } return(0); }
private static ulong ParseHexUInt64 <T>(T carrier, Func <T, string, IEnumerable <string> > getter, string headerName) { var headerValues = getter(carrier, headerName).ToList(); if (!headerValues.Any()) { return(0); } foreach (var headerValue in headerValues) { if (ulong.TryParse(headerValue, NumberStyle, InvariantCulture, out var result)) { return(result); } } Log.Information("Could not parse {0} headers: {1}", headerName, string.Join(",", headerValues)); return(0); }
internal async Task WriteDiagnosticLog() { string agentError = null; try { var success = await _agentWriter.Ping().ConfigureAwait(false); if (!success) { agentError = "An error occurred while sending traces to the agent"; } } catch (Exception ex) { agentError = ex.Message; } try { var frameworkDescription = FrameworkDescription.Create(); var stringWriter = new StringWriter(); using (var writer = new JsonTextWriter(stringWriter)) { writer.WriteStartObject(); writer.WritePropertyName("date"); writer.WriteValue(DateTime.Now); writer.WritePropertyName("os_name"); writer.WriteValue(frameworkDescription.OSPlatform); writer.WritePropertyName("os_version"); writer.WriteValue(Environment.OSVersion.ToString()); writer.WritePropertyName("version"); writer.WriteValue(typeof(Tracer).Assembly.GetName().Version.ToString()); writer.WritePropertyName("platform"); writer.WriteValue(frameworkDescription.ProcessArchitecture); writer.WritePropertyName("lang"); writer.WriteValue(frameworkDescription.Name); writer.WritePropertyName("lang_version"); writer.WriteValue(frameworkDescription.ProductVersion); writer.WritePropertyName("env"); writer.WriteValue(Settings.Environment); writer.WritePropertyName("enabled"); writer.WriteValue(Settings.TraceEnabled); writer.WritePropertyName("service"); writer.WriteValue(DefaultServiceName); writer.WritePropertyName("agent_url"); writer.WriteValue(Settings.AgentUri); writer.WritePropertyName("debug"); writer.WriteValue(GlobalSettings.Source.DebugEnabled); writer.WritePropertyName("analytics_enabled"); writer.WriteValue(Settings.AnalyticsEnabled); writer.WritePropertyName("sample_rate"); writer.WriteValue(Settings.GlobalSamplingRate); writer.WritePropertyName("sampling_rules"); writer.WriteValue(Settings.CustomSamplingRules); writer.WritePropertyName("tags"); writer.WriteStartArray(); foreach (var entry in Settings.GlobalTags) { writer.WriteValue(string.Concat(entry.Key, ":", entry.Value)); } writer.WriteEndArray(); writer.WritePropertyName("log_injection_enabled"); writer.WriteValue(Settings.LogsInjectionEnabled); writer.WritePropertyName("runtime_metrics_enabled"); writer.WriteValue(Settings.TracerMetricsEnabled); writer.WritePropertyName("disabled_integrations"); writer.WriteStartArray(); foreach (var integration in Settings.DisabledIntegrationNames) { writer.WriteValue(integration); } writer.WriteEndArray(); writer.WritePropertyName("netstandard_enabled"); writer.WriteValue(Settings.IsNetStandardFeatureFlagEnabled()); writer.WritePropertyName("agent_reachable"); writer.WriteValue(agentError == null); writer.WritePropertyName("agent_error"); writer.WriteValue(agentError ?? string.Empty); writer.WriteEndObject(); } Log.Information("DATADOG TRACER CONFIGURATION - {0}", stringWriter.ToString()); } catch (Exception ex) { Log.Warning(ex, "DATADOG TRACER DIAGNOSTICS - Error fetching configuration"); } }