in src/Elastic.OpenTelemetry/Hosting/ElasticOpenTelemetryService.cs [17:48]
internal sealed class ElasticOpenTelemetryService(IServiceProvider serviceProvider) : IHostedLifecycleService
{
private ElasticOpenTelemetryComponents? _components;
public Task StartingAsync(CancellationToken cancellationToken)
{
var loggerFactory = serviceProvider.GetService<ILoggerFactory>();
var logger = loggerFactory?.CreateElasticLogger() ?? NullLogger.Instance;
_components = serviceProvider.GetService<ElasticOpenTelemetryComponents>();
_components?.SetAdditionalLogger(logger, ElasticOpenTelemetry.ActivationMethod);
return Task.CompletedTask;
}
public Task StartAsync(CancellationToken cancellationToken) => Task.CompletedTask;
public Task StartedAsync(CancellationToken cancellationToken) => Task.CompletedTask;
public Task StoppingAsync(CancellationToken cancellationToken) => Task.CompletedTask;
public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask;
public async Task StoppedAsync(CancellationToken cancellationToken)
{
if (_components?.Logger is not null)
await _components.Logger.DisposeAsync().ConfigureAwait(false);
if (_components?.LoggingEventListener is not null)
await _components.LoggingEventListener.DisposeAsync().ConfigureAwait(false);
}
}