public static ILoggingBuilder AddHealthCheckLogger <TMessageFormatter>(this ILoggingBuilder builder, HealthCheckLoggerProviderConfiguration configuration) where TMessageFormatter : class, IHealthMessageFormatter
        {
            var provider = new HealthCheckLoggerProvider(configuration);

            builder.AddProvider(provider);
            builder.Services.AddSingleton(provider);
            builder.Services.AddSingleton <IHealthMessageFormatter, TMessageFormatter>();
            return(builder);
        }
        public void LimitWithMaxNumber()
        {
            var healthCheckLoggerProvider = new HealthCheckLoggerProvider(new HealthCheckLoggerProviderConfiguration
            {
                MaxNumberOfLogEntries = 10
            });

            for (var i = 0; i < 20; i++)
            {
                healthCheckLoggerProvider.AddLogEntry(new LogEntry(DateTime.Now, "random", LogLevel.Critical, "random", "random", new EventId(), null));
            }
            healthCheckLoggerProvider.GetLogEntries().Length.Should().Be(10);
        }
        public async Task LimitWithTimeAsync()
        {
            var healthCheckLoggerProvider = new HealthCheckLoggerProvider(new HealthCheckLoggerProviderConfiguration {
                FlushTime = TimeSpan.FromMilliseconds(10)
            });

            for (var i = 0; i < 20; i++)
            {
                healthCheckLoggerProvider.AddLogEntry(new LogEntry(DateTime.Now, "random", LogLevel.Critical, "random", "random", new EventId(), null));
            }
            await Task.Delay(50);

            healthCheckLoggerProvider.GetLogEntries().Length.Should().Be(0);
        }