コード例 #1
0
        public void Fact3()
        {
            DummySink sink = new DummySink();
            LoggerSourceContextLevelOverrides switches = new LoggerSourceContextLevelOverrides(LogEventLevel.Warning,
                                                                                               KeyValuePair.Create("A", LogEventLevel.Debug),
                                                                                               KeyValuePair.Create("2", LogEventLevel.Debug),
                                                                                               KeyValuePair.Create("3", LogEventLevel.Debug),
                                                                                               KeyValuePair.Create("4", LogEventLevel.Debug),
                                                                                               KeyValuePair.Create("5", LogEventLevel.Debug),
                                                                                               KeyValuePair.Create("6", LogEventLevel.Debug),
                                                                                               KeyValuePair.Create("7", LogEventLevel.Debug),
                                                                                               KeyValuePair.Create("8", LogEventLevel.Debug),
                                                                                               KeyValuePair.Create("9", LogEventLevel.Debug),
                                                                                               KeyValuePair.Create("10", LogEventLevel.Debug)
                                                                                               );

            Logger logger = new LoggerConfiguration()
                            .Filter().MinimumLevel()
                            .WriteTo.Logger(c => c
                                            .Filter().Overrides(switches)
                                            .WriteTo.Sink(sink))
                            .CreateLogger();

            Logger defaultLogger = new LoggerConfiguration()
                                   .Filter().MinimumLevel()
                                   .WriteTo.Logger(c => c
                                                   .Filter().Overrides(switches)
                                                   .WriteTo.Sink(sink))
                                   .CreateLogger();

            Serilog.ILogger abLogger = logger.ForContext(Constants.SourceContextPropertyName, "A.B");
            Serilog.ILogger bLogger  = logger.ForContext(Constants.SourceContextPropertyName, "B");

            for (int i = 0; i < 100_000; i++)
            {
                bLogger.Information("b");
            }
            Assert.Empty(sink.Events);

            sink.Events.Clear();
            for (int i = 0; i < 100_000; i++)
            {
                abLogger.Debug("ab");
            }
            Assert.Equal(100000, sink.Events.Count);
            sink.Events.Clear();
        }
コード例 #2
0
        public void Fact3()
        {
            var testSink    = new TestSink();
            var defaultSink = new TestSink();

            var switches = new LoggerSourceContextLevelOverrides(LogEventLevel.Warning,
                                                                 KeyValuePair.Create("A.B", LogEventLevel.Debug)
                                                                 );

            var testLogger = new LoggerConfiguration()
                             .MinimumLevel.Verbose()
                             .WriteTo.Logger(c => c
                                             .Filter().Overrides(switches)
                                             .WriteTo.Sink(testSink))
                             .CreateLogger();

            var defaultLogger = new LoggerConfiguration()
                                .MinimumLevel.Warning()
                                .MinimumLevel.Override("A.B", LogEventLevel.Debug)
                                .WriteTo.Sink(defaultSink)
                                .CreateLogger();

            var abLogger = testLogger.ForContext(Constants.SourceContextPropertyName, "A.B");
            var bLogger  = testLogger.ForContext(Constants.SourceContextPropertyName, "B");


            Measure("Overrides, excluded by default level", () =>
            {
                for (int i = 0; i < 100_000; i++)
                {
                    bLogger.Information("b");
                }
            });
            Assert.Empty(testSink.Events);

            testSink.Events.Clear();

            Measure("Overrides, included by override category level", () =>
            {
                for (int i = 0; i < 100_000; i++)
                {
                    abLogger.Debug("ab");
                }
            });
            Assert.Equal(100000, testSink.Events.Count);
            testSink.Events.Clear();


            var abDefalutLogger = defaultLogger.ForContext(Constants.SourceContextPropertyName, "A.B");
            var bDefaultLogger  = defaultLogger.ForContext(Constants.SourceContextPropertyName, "B");


            Measure("MinimumLevel, excluded by default level", () =>
            {
                for (int i = 0; i < 100_000; i++)
                {
                    bDefaultLogger.Information("b");
                }
            });
            Assert.Empty(defaultSink.Events);

            defaultSink.Events.Clear();
            Measure("MinimumLevel, included by override category level", () =>
            {
                for (int i = 0; i < 100_000; i++)
                {
                    abDefalutLogger.Debug("ab");
                }
            });
            Assert.Equal(100000, defaultSink.Events.Count);
            defaultSink.Events.Clear();
        }