示例#1
0
        public async Task ShouldUseScopeWithParameter()
        {
            // Arrange

            // Act
            await _factory.CreateDefaultClient().GetAsync("/");

            // Assert
            var log = Assert.Single(_factory.GetSerilogTestLoggerSink().LogEntries);

            // Assert specific parameters in the log entry itself, as Serilog puts the scope parameters on the log entry
            LoggingAssert.Contains("name", "GET", log.Properties);
        }
示例#2
0
        public async Task ShouldLogWithWorldAsPlace()
        {
            // Arrange

            // Act
            await _factory.CreateDefaultClient().GetAsync("/");

            // Assert
            var log = Assert.Single(_factory.GetSerilogTestLoggerSink().LogEntries);

            // Assert specific parameters in the log entry
            LoggingAssert.Contains("place", "World", log.Properties);
        }
示例#3
0
        public async Task ShouldBeginScopeWithParameter()
        {
            // Arrange

            // Act
            await _factory.CreateDefaultClient().GetAsync("/");

            // Assert
            var scope = Assert.Single(_factory.GetTestLoggerSink().Scopes);

            // Assert specific parameters in the log scope
            LoggingAssert.Contains("name", "GET", scope.Properties);
        }
示例#4
0
        public async Task ShouldUseDictionaryScope()
        {
            // Arrange

            // Act
            await _factory.CreateDefaultClient().GetAsync("/dictionaryScope");

            // Assert
            var log = Assert.Single(_factory.GetSerilogTestLoggerSink().LogEntries);

            // If the scope is a dictionary, it will only add the properties, not a scope
            Assert.Empty(log.Scopes);
            LoggingAssert.Contains("foo", "bar", log.Properties);
            LoggingAssert.Contains("answer", 42, log.Properties);
        }
示例#5
0
        public void DoSomethingLogsCorrectParameter()
        {
            // Arrange
            var loggerFactory = TestLoggerFactory.Create();
            var logger        = loggerFactory.CreateLogger <Sample>();
            var sample        = new Sample(logger);

            // Act
            sample.DoSomething();

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

            // Assert specific parameters in the log entry
            LoggingAssert.Contains("number", 42, log.Properties);
        }
示例#6
0
        public void UseScopeLogsCorrectParameters()
        {
            // Arrange
            var loggerFactory = TestLoggerFactory.Create();
            var sampleLogger  = loggerFactory.CreateLogger <Sample>();
            var moreLogger    = loggerFactory.CreateLogger <More>();
            var more          = new More(new Sample(sampleLogger), moreLogger);

            // Act
            more.UseScope();

            // Assert
            var scope = Assert.Single(loggerFactory.Sink.Scopes);

            // Assert specific parameters in the log entry
            LoggingAssert.Contains("number", 42, scope.Properties);
        }
示例#7
0
        public void DoEvenMoreLogsCorrectParameters()
        {
            // Arrange
            var loggerFactory = TestLoggerFactory.Create();
            var sampleLogger  = loggerFactory.CreateLogger <Sample>();
            var moreLogger    = loggerFactory.CreateLogger <More>();
            var more          = new More(new Sample(sampleLogger), moreLogger);


            // Act
            more.DoEvenMore();

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

            // Assert specific parameters in the log entry
            LoggingAssert.Contains("number", 42, log.Properties);
            LoggingAssert.Contains("foo", "bar", log.Properties);
        }
示例#8
0
        public async Task ShouldLogWithMultipleValuesForPlace()
        {
            // Arrange

            // Act
            await _factory.CreateDefaultClient().GetAsync("/?multipleValues=1");

            // Assert
            var log = Assert.Single(_factory.GetTestLoggerSink().LogEntries);

            // Assert specific parameters in the log entry
            LoggingAssert.Contains("place", "World", log.Properties);
            LoggingAssert.Contains("place", "Universe", log.Properties);
            // or
            LoggingAssert.Contains(new[] {
                new KeyValuePair <string, object> ("place", "World"),
                new KeyValuePair <string, object> ("place", "Universe")
            }, log.Properties);
        }
示例#9
0
        public void TraceLogsMessageWithScope()
        {
            // Arrange
            var loggerFactory = TestLoggerFactory.Create();
            var sampleLogger  = loggerFactory.CreateLogger <Sample>();
            var moreLogger    = loggerFactory.CreateLogger <More>();
            var more          = new More(new Sample(sampleLogger), moreLogger);

            // Act
            more.Trace();

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

            Assert.Equal("This log entry is at trace level", log.Message);
            LoggingAssert.Contains("level", "trace", log.Properties);
            var scope = Assert.Single(log.Scopes);

            LoggingAssert.Contains("foo", "bar", scope.Properties);
        }
示例#10
0
        public void DoExceptionalLogsException()
        {
            // Arrange
            var loggerFactory = TestLoggerFactory.Create();
            var logger        = loggerFactory.CreateLogger <Sample>();
            var sample        = new Sample(logger);

            // Act
            sample.DoExceptional();

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

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

            Assert.Equal("foo", exception.ParamName);
        }
示例#11
0
 public static void Contains(
     IEnumerable <KeyValuePair <string, object> > expectedValues,
     IEnumerable <KeyValuePair <string, object> > actualValues)
 => LoggingAssert.Contains(expectedValues, actualValues);
示例#12
0
 public static void Contains(
     string key,
     object value,
     IEnumerable <KeyValuePair <string, object> > actualValues)
 => LoggingAssert.Contains(key, value, actualValues);