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 }
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); }
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); }
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); }
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); }
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)); }
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); }
public LoggingTest(WebApplicationFactory <Startup> factory) { _sink = MELTBuilder.CreateTestSink(options => options.FilterByNamespace(nameof(SampleWebApplication))); _factory = factory.WithWebHostBuilder(builder => builder.UseTestLogging(_sink)); }
public static ILoggingBuilder AddTestLogger(this ILoggingBuilder builder) => builder.AddTestLogger(MELTBuilder.CreateTestSink());
public static ILoggingBuilder AddTestLogger(this ILoggingBuilder builder, Action <TestSinkOptions> configure) => builder.AddTestLogger(MELTBuilder.CreateTestSink(configure));