Пример #1
0
        private static ILoggingBuilder AddTestLoggerProvider(this ILoggingBuilder builder, TestLoggerOptions options)
        {
            var sink = MELTBuilder.CreateTestSink(options);

            builder.Services.TryAddSingleton(sink);
            builder.Services.TryAddSingleton <IInternalTestSink>(sink);
            builder.Services.TryAddTransient <ITestLoggerSink, TestLoggerSinkAccessor>();
            return(builder.AddProvider(new TestLoggerProvider(sink)));
        }
        /// <summary>
        /// Adds a provider for testing logs with the Serilog behaviour to the <see cref="ILoggingBuilder"/>
        /// </summary>
        /// <param name="builder">The <see cref="ILoggingBuilder"/> to add it to.</param>
        /// <param name="configure">The delegate to configure the <see cref="TestLoggerOptions"/>.</param>
        /// <returns>The <see cref="ILoggingBuilder"/> so that additional calls can be chained.</returns>
        public static ILoggingBuilder AddSerilogTest(this ILoggingBuilder builder, Action <TestLoggerOptions> configure)
        {
            if (configure == null)
            {
                throw new ArgumentNullException(nameof(configure));
            }

            var options = MELTBuilder.CreateOptions(configure);

            return(builder.AddSerilogTestLoggerProvider(options));
        }
        private static ILoggingBuilder AddSerilogTestLoggerProvider(this ILoggingBuilder builder, TestLoggerOptions options)
        {
            var sink = MELTBuilder.CreateTestSink(options);

            builder.Services.TryAddSingleton(sink);
#pragma warning disable CS0612 // Type or member is obsolete
            builder.Services.TryAddSingleton <IInternalTestSink>(sink);
#pragma warning restore CS0612 // Type or member is obsolete
            builder.Services.TryAddTransient <ISerilogTestLoggerSink, SerilogTestLoggerSinkAccessor>();
#pragma warning disable CS0612 // Type or member is obsolete
            return(builder.AddProvider(new TestLoggerProvider(sink)));

#pragma warning restore CS0612 // Type or member is obsolete
        }
Пример #4
0
        public void DoSomethingLogsUsingCorrectFormat()
        {
            // Arrange
            var loggerFactory = MELTBuilder.CreateLoggerFactory();
            var logger        = loggerFactory.CreateLogger <Sample>();
            var sample        = new Sample(logger);

            // Act
            sample.DoSomething();

            // Assert
            var log = Assert.Single(loggerFactory.LogEntries);

            // Assert the the log format template
            Assert.Equal("The answer is {number}", log.Format);
        }
Пример #5
0
        public void DoSomethingLogsCorrectParameter()
        {
            // Arrange
            var loggerFactory = MELTBuilder.CreateLoggerFactory();
            var logger        = loggerFactory.CreateLogger <Sample>();
            var sample        = new Sample(logger);

            // Act
            sample.DoSomething();

            // Assert
            var log = Assert.Single(loggerFactory.LogEntries);

            // Assert specific parameters in the log entry
            LogValuesAssert.Contains("number", 42, log);
        }
Пример #6
0
        public void DoSomethingLogsMessage()
        {
            // Arrange
            var loggerFactory = MELTBuilder.CreateLoggerFactory();
            var logger        = loggerFactory.CreateLogger <Sample>();
            var sample        = new Sample(logger);

            // Act
            sample.DoSomething();

            // Assert
            var log = Assert.Single(loggerFactory.LogEntries);

            // Assert the message rendered by a default formatter
            Assert.Equal("The answer is 42", log.Message);
        }
Пример #7
0
        public void DoMoreLogsFormat_NotCheckingNested()
        {
            // Arrange
            var loggerFactory = MELTBuilder.CreateLoggerFactory(options => options.FilterByTypeName <More>());
            var sampleLogger  = loggerFactory.CreateLogger <Sample>();
            var moreLogger    = loggerFactory.CreateLogger <More>();
            var more          = new More(new Sample(sampleLogger), moreLogger);

            // Act
            more.DoMore();

            // Assert
            var log = Assert.Single(loggerFactory.LogEntries);

            Assert.Equal("More is less.", log.Format);
        }
Пример #8
0
        public void DoMoreLogsMessage()
        {
            // Arrange
            var loggerFactory = MELTBuilder.CreateLoggerFactory();
            var sampleLogger  = loggerFactory.CreateLogger <Sample>();
            var moreLogger    = loggerFactory.CreateLogger <More>();
            var more          = new More(new Sample(sampleLogger), moreLogger);

            // Act
            more.DoMore();

            // Assert
            Assert.Collection(loggerFactory.LogEntries,
                              l => Assert.Equal("More is less.", l.Message),
                              l => Assert.Equal("The answer is 42", l.Message));
        }
Пример #9
0
        public void DoExceptionalLogsException()
        {
            // Arrange
            var loggerFactory = MELTBuilder.CreateLoggerFactory();
            var logger        = loggerFactory.CreateLogger <Sample>();
            var sample        = new Sample(logger);

            // Act
            sample.DoExceptional();

            // Assert
            var log = Assert.Single(loggerFactory.LogEntries);

            // Assert the message rendered by a default formatter
            Assert.Equal("There was a problem", log.Message);
            // Assert specific parameters in the log entry
            LogValuesAssert.Contains("error", "problem", log);
            // Assert the exception
            var exception = Assert.IsType <ArgumentNullException>(log.Exception);

            Assert.Equal("foo", exception.ParamName);
        }
Пример #10
0
 public LoggingTest(WebApplicationFactory <Startup> factory)
 {
     _sink    = MELTBuilder.CreateTestSink(options => options.FilterByNamespace(nameof(SampleWebApplication)));
     _factory = factory.WithWebHostBuilder(builder => builder.UseTestLogging(_sink));
 }
Пример #11
0
 public static ILoggingBuilder AddTestLogger(this ILoggingBuilder builder)
 => builder.AddTestLogger(MELTBuilder.CreateTestSink());
Пример #12
0
 public static ILoggingBuilder AddTestLogger(this ILoggingBuilder builder, Action <TestSinkOptions> configure)
 => builder.AddTestLogger(MELTBuilder.CreateTestSink(configure));