public static ILoggingBuilder AddCosmosLogging(this ILoggingBuilder builder, IConfigurationRoot root, Action <ILogServiceCollection> config = null)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            var servicesImpl = new StandardLogServiceCollection(builder.Services, root);

            config?.Invoke(servicesImpl);

            builder.Services.TryAdd(ServiceDescriptor.Singleton <ILoggingServiceProvider, MicrosoftLoggingServiceProvider>());
            builder.Services.TryAdd(ServiceDescriptor.Singleton(typeof(ILogger <>), typeof(MicrosoftLoggerWrapper <>)));

            servicesImpl.BuildConfiguration();
            servicesImpl.ActiveSinkSettings();
            servicesImpl.ActiveOriginConfiguration();

            builder.Services.TryAdd(ServiceDescriptor.Singleton(Options.Create((LoggingOptions)servicesImpl.ExposeLogSettings())));
            builder.Services.TryAdd(ServiceDescriptor.Singleton(servicesImpl.ExposeLoggingConfiguration()));
            builder.Services.TryAdd(ServiceDescriptor.Singleton(typeof(StaticServiceResolveInitialization),
                                                                provider => new StaticServiceResolveInitialization(provider.GetRequiredService <ILoggingServiceProvider>())));

            return(builder);
        }
 private static void RegisterCallback(this StandardLogServiceCollection services)
 {
     services.AddDependency(s => s.AddSingleton <StandardSecInitializingCallback, IServiceProvider>(provider => {
         var callback = new StandardSecInitializingCallback();
         callback.AppendAction(services.ActiveLogEventEnrichers);
         callback.AppendAction(() => StaticServiceResolver.SetResolver(provider.GetService <ILoggingServiceProvider>()));
         return(callback);
     }));
 }
        private static void BuildAndActiveConfiguration(this StandardLogServiceCollection services)
        {
            services.BuildConfiguration();
            services.ActiveSinkSettings();
            services.ActiveOriginConfiguration();

            services.AddDependency(s => s.TryAddSingleton(Options.Options.Create((LoggingOptions)services.ExposeLogSettings())));
            services.AddDependency(s => s.TryAddSingleton(services.ExposeLoggingConfiguration()));
        }