コード例 #1
0
 public void AddProvider(IReporterProvider provider)
 {
     lock (_syncLock)
     {
         _providers.Add(provider.GetType(), provider);
     }
 }
コード例 #2
0
ファイル: ReportFactory.cs プロジェクト: fengweijp/AppMetrics
        public void AddProvider(IReporterProvider provider)
        {
            if (CheckDisposed())
            {
                throw new ObjectDisposedException(nameof(ReportFactory));
            }

            lock (_syncLock)
            {
                _providers.Add(provider.GetType(), provider);
            }
        }
コード例 #3
0
ファイル: Reporter.cs プロジェクト: IcePhoenix-by/AppMetrics
        private Task ScheduleReport(IMetrics context, CancellationToken token, KeyValuePair <Type, IMetricReporter> metricReporter, ILogger logger,
                                    IReporterProvider provider,
                                    IReporterSettings settings)
        {
            return(_scheduler.Interval(metricReporter.Value.ReportInterval, async() =>
            {
                var startTimestamp = _logger.IsEnabled(LogLevel.Information) ? Stopwatch.GetTimestamp() : 0;

                logger.ReportedStarted(metricReporter.Value);

                await _reportGenerator.Generate(metricReporter.Value, context, provider.Filter, token);

                logger.ReportRan(metricReporter.Value, startTimestamp);
            },
                                       token));
        }
コード例 #4
0
        private Task ScheduleReport(
            IMetrics context,
            CancellationToken token,
            KeyValuePair <Type, IMetricReporter> metricReporter,
            IReporterProvider provider)
        {
            return(_scheduler.Interval(
                       metricReporter.Value.ReportInterval,
                       TaskCreationOptions.LongRunning,
                       async() =>
            {
                try
                {
                    var result = await _reportGenerator.GenerateAsync(
                        metricReporter.Value,
                        context,
                        provider.Filter,
                        token);

                    if (result)
                    {
                        _metrics.Measure.Counter.Increment(_successCounter, metricReporter.Key.Name);
                    }
                    else
                    {
                        _metrics.Measure.Counter.Increment(_failedCounter, metricReporter.Key.Name);
                        _logger.ReportFailed(metricReporter.Value);
                    }
                }
                catch (Exception ex)
                {
                    _metrics.Measure.Counter.Increment(_failedCounter, metricReporter.Key.Name);
                    _logger.ReportFailed(metricReporter.Value, ex);
                }
            },
                       token));
        }
コード例 #5
0
        private static void Compare(CommandLineOptions args, IResultsComparerProvider comparerProvider, IReporterProvider reporterProvider)
        {
            try
            {
                IResultsComparer comparer = string.IsNullOrEmpty(args.Comparer) ?
                                            comparerProvider.GetForFile(args.BasePath) : comparerProvider.GetById(args.Comparer);

                Console.WriteLine($"Comparer selected: {comparer.Name}\n");


                ComparerOptions options = new()
                {
                    StatisticalTestThreshold = args.StatisticalTestThreshold,
                    NoiseThreshold           = args.NoiseThreshold,
                    FullId   = args.FullId,
                    TopCount = args.TopCount,
                    Filters  = args.Filters,
                    Metric   = args.Metric
                };

                ComparerResults results = comparer.CompareResults(args.BasePath, args.DiffPath, options);

                IReporter reporter = reporterProvider.GetDefault();
                Stream    output   = Console.OpenStandardOutput();
                reporter.GenerateReport(results, output, options, leaveStreamOpen: true);
            }
            catch (Exception ex)
            {
                Console.Error.WriteLine($"Error: {ex.Message}");
            }
        }
コード例 #6
0
 public void AddProvider(IReporterProvider provider)
 {
 }