public static T WithElasticDefaults()

in src/Elastic.OpenTelemetry.Core/SignalBuilder.cs [56:100]


	public static T WithElasticDefaults<T>(
		T builder,
		Signals signal,
		CompositeElasticOpenTelemetryOptions? options,
		ElasticOpenTelemetryComponents? components,
		IServiceCollection? services,
		Action<T, BuilderState, IServiceCollection?> configure) where T : class
	{
		var providerBuilderName = builder.GetType().Name;
		var logger = GetLogger(components, options);

		BuilderState? builderState = null;

		try
		{
			var builderInstanceId = "<unknown>";

			if (BuilderStateTable.TryGetValue(builder, out var existingBuilderState))
			{
				builderState = existingBuilderState;
				builderInstanceId = existingBuilderState.InstanceIdentifier;
			}

			if (builderState is not null)
				logger = builderState.Components.Logger;

			// If the signal is disabled via configuration we skip any potential bootstrapping.
			var configuredSignals = components?.Options.Signals ?? options?.Signals ?? Signals.All;
			if (!configuredSignals.HasFlagFast(signal))
			{
				logger.LogSignalDisabled(signal.ToString().ToLower(), providerBuilderName, builderInstanceId);
				return builder;
			}

			return WithElasticDefaults(builder, options, components, services, configure);
		}
		catch (Exception ex)
		{
			var signalNameForLogging = signal.ToStringFast().ToLowerInvariant();
			logger.LogError(new EventId(501, "BuilderDefaultsFailed"), ex, "Failed to fully register EDOT .NET " +
				"{Signal} defaults on the {ProviderBuilderName}.", signalNameForLogging, providerBuilderName);
		}

		return builder;
	}