Exemple #1
0
        public Reporter(
            AppMetricsOptions options,
            ReportFactory reportFactory,
            IMetrics metrics,
            IScheduler scheduler,
            ILoggerFactory loggerFactory)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            if (reportFactory == null)
            {
                throw new ArgumentNullException(nameof(reportFactory));
            }

            if (metrics == null)
            {
                throw new ArgumentNullException(nameof(metrics));
            }

            if (scheduler == null)
            {
                throw new ArgumentNullException(nameof(scheduler));
            }

            if (loggerFactory == null)
            {
                throw new ArgumentNullException(nameof(loggerFactory));
            }

            _reportGenerator = new DefaultReportGenerator(options, loggerFactory);
            _metrics         = metrics;
            _scheduler       = scheduler;
            _loggerFactory   = loggerFactory;
            _logger          = loggerFactory.CreateLogger <Reporter>();

            _providers = reportFactory.GetProviders();

            if (_providers.Count <= 0)
            {
                return;
            }

            _metricReporters = new Dictionary <Type, IMetricReporter>(_providers.Count);

            foreach (var provider in _providers)
            {
                _metricReporters.Add(provider.Key, provider.Value.CreateMetricReporter(provider.Key.Name, _loggerFactory));
            }

            _successCounter = new CounterOptions
            {
                Context          = Constants.InternalMetricsContext,
                MeasurementUnit  = Unit.Items,
                ResetOnReporting = true,
                Name             = "report_success"
            };

            _failedCounter = new CounterOptions
            {
                Context          = Constants.InternalMetricsContext,
                MeasurementUnit  = Unit.Items,
                ResetOnReporting = true,
                Name             = "report_failed"
            };
        }