using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Logging.Configuration; namespace Iceshrimp.Frontend.Core.InMemoryLogger; internal static class InMemoryLoggerExtension { public static void AddInMemoryLogger( this ILoggingBuilder builder, IConfiguration configuration ) { builder.AddConfiguration(); builder.Services.AddOptionsWithValidateOnStart() .Bind(configuration.GetSection("InMemoryLogger")); LoggerProviderOptions .RegisterProviderOptions(builder.Services); builder.Services.TryAddSingleton(); builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton()); } public static void AddInMemoryLogger( this ILoggingBuilder builder, Action configure ) { builder.Services.TryAddSingleton(); builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton()); builder.Services.Configure(configure); } }