private void ConfigureSinks() { lock (this) { sinkConfigs = config.GetInstanceConfigs(SinkKey); int confPeriod = 0; foreach (KeyValuePair <string, MetricsConfig> entry in sinkConfigs) { MetricsConfig conf = entry.Value; int sinkPeriod = conf.GetInt(PeriodKey, PeriodDefault); confPeriod = confPeriod == 0 ? sinkPeriod : ArithmeticUtils.Gcd(confPeriod, sinkPeriod ); string clsName = conf.GetClassName(string.Empty); if (clsName == null) { continue; } // sink can be registered later on string sinkName = entry.Key; try { MetricsSinkAdapter sa = NewSink(sinkName, conf.GetString(DescKey, sinkName), conf ); sa.Start(); sinks[sinkName] = sa; } catch (Exception e) { Log.Warn("Error creating sink '" + sinkName + "'", e); } } period = confPeriod > 0 ? confPeriod : config.GetInt(PeriodKey, PeriodDefault); } }
internal static MetricsSinkAdapter NewSink(string name, string desc, MetricsSink sink, MetricsConfig conf) { return(new MetricsSinkAdapter(name, desc, sink, conf.GetString(ContextKey), conf. GetFilter(SourceFilterKey), conf.GetFilter(RecordFilterKey), conf.GetFilter(MetricFilterKey ), conf.GetInt(PeriodKey, PeriodDefault), conf.GetInt(QueueCapacityKey, QueueCapacityDefault ), conf.GetInt(RetryDelayKey, RetryDelayDefault), conf.GetFloat(RetryBackoffKey, RetryBackoffDefault), conf.GetInt(RetryCountKey, RetryCountDefault))); }