public void LeveledEnrichersCheckLevelSwitch()
        {
            var enricher    = new CollectingEnricher();
            var levelSwitch = new LoggingLevelSwitch(LogEventLevel.Warning);

            var logger = new LoggerConfiguration()
                         .Enrich.AtLevel(levelSwitch, enrich => enrich.With(enricher))
                         .CreateLogger();

            logger.Information("Information");
            logger.Warning("Warning");
            logger.Error("Error");

            Assert.Equal(2, enricher.Events.Count);
            Assert.All(enricher.Events, e => Assert.True(e.Level >= LogEventLevel.Warning));

            enricher.Events.Clear();
            levelSwitch.MinimumLevel = LogEventLevel.Error;

            logger.Information("Information");
            logger.Warning("Warning");
            logger.Error("Error");

            var error = Assert.Single(enricher.Events);

            Assert.True(error.Level == LogEventLevel.Error);
        }
        public void LeveledEnrichersCheckLevels()
        {
            var enricher = new CollectingEnricher();

            var logger = new LoggerConfiguration()
                         .Enrich.AtLevel(LogEventLevel.Warning, enrich => enrich.With(enricher))
                         .CreateLogger();

            logger.Information("Information");
            logger.Warning("Warning");
            logger.Error("Error");

            Assert.Equal(2, enricher.Events.Count);
            Assert.All(enricher.Events, e => Assert.True(e.Level >= LogEventLevel.Warning));
        }
        public void ConditionalEnrichersCheckConditions()
        {
            var enricher = new CollectingEnricher();

            var logger = new LoggerConfiguration()
                         .Enrich.When(le => le.Level == LogEventLevel.Warning, enrich => enrich.With(enricher))
                         .CreateLogger();

            logger.Information("Information");
            logger.Warning("Warning");
            logger.Error("Error");

            var evt = Assert.Single(enricher.Events);

            Assert.Equal(LogEventLevel.Warning, evt.Level);
        }
        public void EnrichersCanBeWrapped()
        {
            var enricher = new CollectingEnricher();

            var configuration = new LoggerConfiguration();

            LoggerEnrichmentConfiguration.Wrap(
                configuration.Enrich,
                e => new ConditionalEnricher(e, le => le.Level == LogEventLevel.Warning),
                enrich => enrich.With(enricher));

            var logger = configuration.CreateLogger();

            logger.Information("Information");
            logger.Warning("Warning");
            logger.Error("Error");

            var evt = Assert.Single(enricher.Events);

            Assert.Equal(LogEventLevel.Warning, evt.Level);
        }