public static ILoggingBuilder AddAnsiConsoleFormatter <TFormatter, TOptions>(this ILoggingBuilder builder,
                                                                                     Action <TOptions> configure)
            where TOptions : AnsiConsoleFormatterOptions
            where TFormatter : class, IConsoleFormatter
        {
            if (configure == null)
            {
                throw new ArgumentNullException(nameof(configure));
            }

            builder.AddAnsiConsoleFormatter <TFormatter, TOptions>();
            builder.Services.Configure(configure);
            return(builder);
        }
        public static ILoggingBuilder AddAnsiConsole(this ILoggingBuilder builder)
        {
            builder.AddConfiguration();

            builder.AddAnsiConsoleFormatter <DefaultAnsiConsoleFormatter, DefaultAnsiConsoleFormatterOptions>();
            //TODO : more console formatters

            builder.Services.TryAddSingleton <AnsiConsoleLoggerProvider>();
            builder.Services.TryAddEnumerable(ServiceDescriptor
                                              .Singleton <ILoggerProvider, AnsiConsoleLoggerProvider>(provider =>
                                                                                                      provider.GetRequiredService <AnsiConsoleLoggerProvider>()));
            LoggerProviderOptions
            .RegisterProviderOptions <AnsiConsoleLoggerOptions, AnsiConsoleLoggerProvider>(builder.Services);

            return(builder);
        }