Unify picture configuration and options registration

This commit is contained in:
2026-09-24 05:23:40 +02:00
parent 5e819d7676
commit 4d943e068e
51 changed files with 384 additions and 525 deletions
@@ -1,35 +1,29 @@
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Musify.Infrastructure.Configuration;
using OpenTelemetry.Exporter;
using OpenTelemetry.Logs;
using OpenTelemetry.Metrics;
using OpenTelemetry.Resources;
using OpenTelemetry.Trace;
using Musify.Application.Configuration;
namespace Musify.Infrastructure.Observability;
public static class OpenTelemetryDependencyInjection
{
public static IServiceCollection AddObservability(this IServiceCollection serviceDescriptors, IConfiguration configuration)
public static IServiceCollection AddObservability(this IServiceCollection services, IConfiguration configuration)
{
serviceDescriptors
.AddOptionsWithValidateOnStart<OpenTelemetryConfiguration>()
.Bind(configuration.GetRequiredSection(OpenTelemetryConfiguration.SectionName))
.ValidateDataAnnotations();
services.AddValidatedOptions<OpenTelemetryConfiguration>(configuration);
serviceDescriptors.AddSingleton(serviceProvider =>
serviceProvider.GetRequiredService<IOptions<OpenTelemetryConfiguration>>().Value);
serviceDescriptors
services
.AddOptions<OtlpExporterOptions>()
.Configure<OpenTelemetryConfiguration>((exporterOptions, openTelemetryConfiguration) =>
{
exporterOptions.Endpoint = new Uri(openTelemetryConfiguration.OtlpEndpoint);
});
serviceDescriptors
services
.AddOpenTelemetry()
.ConfigureResource(resource =>
{
@@ -54,6 +48,6 @@ public static class OpenTelemetryDependencyInjection
logging.AddOtlpExporter()
);
return serviceDescriptors;
return services;
}
}