private static MeterProviderBuilder AddConsoleExporter(
            MeterProviderBuilder builder,
            ConsoleExporterOptions exporterOptions,
            MetricReaderOptions metricReaderOptions,
            Action <ConsoleExporterOptions> configureExporter,
            Action <ConsoleExporterOptions, MetricReaderOptions> configureExporterAndMetricReader)
        {
            if (configureExporterAndMetricReader != null)
            {
                configureExporterAndMetricReader.Invoke(exporterOptions, metricReaderOptions);
            }
            else
            {
                configureExporter?.Invoke(exporterOptions);
            }

            var metricExporter = new ConsoleMetricExporter(exporterOptions);

            var metricReader = PeriodicExportingMetricReaderHelper.CreatePeriodicExportingMetricReader(
                metricExporter,
                metricReaderOptions,
                DefaultExportIntervalMilliseconds,
                DefaultExportTimeoutMilliseconds);

            return(builder.AddReader(metricReader));
        }
        public static MeterProviderBuilder AddConsoleExporter(this MeterProviderBuilder builder, Action <ConsoleExporterOptions> configure = null)
        {
            Guard.Null(builder, nameof(builder));

            var options = new ConsoleExporterOptions();

            configure?.Invoke(options);

            var exporter = new ConsoleMetricExporter(options);

            var reader = options.MetricExportIntervalMilliseconds == Timeout.Infinite
                ? new BaseExportingMetricReader(exporter)
                : new PeriodicExportingMetricReader(exporter, options.MetricExportIntervalMilliseconds);

            reader.PreferredAggregationTemporality = options.AggregationTemporality;

            return(builder.AddReader(reader));
        }