private static void AddStatsdMetricSink(IServiceCollection services, StatsdSinkConfiguration statsdConfiguration, Table metricSinkAsciiTable) { metricSinkAsciiTable.AddRow("StatsD", $"Url: {statsdConfiguration.Host}:{statsdConfiguration.Port}."); services.AddTransient <IMetricSink, StatsdMetricSink>(); services.AddStatsD(provider => { var loggerFactory = provider.GetRequiredService <ILoggerFactory>(); var sinkLogger = loggerFactory.CreateLogger <StatsdMetricSink>(); var host = statsdConfiguration.Host; var port = statsdConfiguration.Port; var metricPrefix = statsdConfiguration.MetricPrefix; return(new StatsDConfiguration { Host = host, Port = port, Prefix = metricPrefix, OnError = ex => { sinkLogger.LogCritical(ex, "Failed to emit metric to {StatsdHost} on {StatsdPort} with prefix {StatsdPrefix}", host, port, metricPrefix); return true; } }); }); }
public RuntimeConfigurationGenerator WithStatsDMetricSink(int?port = 1234, string host = "automated-test.host", string metricPrefix = "test.") { StatsdSinkConfiguration statsdSinkConfiguration; if (string.IsNullOrWhiteSpace(host) && port == null) { statsdSinkConfiguration = null; } else { statsdSinkConfiguration = new StatsdSinkConfiguration(); if (string.IsNullOrWhiteSpace(host) == false) { statsdSinkConfiguration.Host = host; } if (string.IsNullOrWhiteSpace(metricPrefix) == false) { statsdSinkConfiguration.MetricPrefix = metricPrefix; } if (port != null) { statsdSinkConfiguration.Port = port.Value; } } _runtimeConfiguration.MetricSinks.Statsd = statsdSinkConfiguration; return(this); }