Exemplo n.º 1
0
        /// <summary>
        /// Register Jaeger Exporter.
        /// </summary>
        /// <param name="builder">The <see cref="TracingConfigurationBuilder" />.</param>
        /// <param name="configurationSectionName">The Configuration section name. </param>
        /// <returns>The <see cref="TracingConfigurationBuilder" />.</returns>
        public static TracingConfigurationBuilder RegisterJaeger([NotNull] this TracingConfigurationBuilder builder, string configurationSectionName = ExporterName)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            var options = builder.TracingConfiguration.GetSection($"Exporters:{configurationSectionName}").Get <JaegerExporterOptions>();

            return(options == null ? builder : builder.RegisterExporter(ExporterName, new JaegerTracingExporterProvider(options)));
        }
Exemplo n.º 2
0
        /// <summary>
        /// Configures Tracing Exporters.
        /// </summary>
        /// <param name="tracerBuilder">The <see cref="TracerBuilder"/>.</param>
        /// <param name="tracingConfigurationBuilder">A delegate that is used to configure the <see cref="TracingConfigurationBuilder" />.</param>
        /// <param name="configurationSection">The <see cref="IConfigurationSection"/> which binds to <see cref="TracingOptions"/>.</param>
        /// <returns>The <see cref="TracerBuilder"/>.</returns>
        public static TracerBuilder ConfigureTracing(
            [NotNull] this TracerBuilder tracerBuilder,
            Action <TracingConfigurationBuilder> tracingConfigurationBuilder,
            IConfigurationSection configurationSection)
        {
            if (tracerBuilder == null)
            {
                throw new ArgumentNullException(nameof(tracerBuilder));
            }
            if (tracingConfigurationBuilder == null)
            {
                throw new ArgumentNullException(nameof(tracingConfigurationBuilder));
            }
            if (configurationSection == null)
            {
                throw new ArgumentNullException(nameof(configurationSection));
            }

            var tracingOptions = configurationSection.Get <TracingOptions>();

            if (tracingOptions?.IsEnabled != true)
            {
                return(tracerBuilder);
            }

            if (tracingOptions.Exporters?.Any() != true)
            {
                throw new ConfigurationErrorsException("No tracing exporters were configured.  Please add at least one tracing exporter");
            }

            var builder = new TracingConfigurationBuilder(tracerBuilder, tracingOptions.Exporters, configurationSection);

            tracingConfigurationBuilder(builder);

            if (!builder.IsConfigured)
            {
                throw new ConfigurationErrorsException("Tracing is enabled but no tracing exporters were configured.");
            }

            return(tracerBuilder);
        }