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;
}