public void LogSendsWithPropertiesAndExtendedProperties()
        {
            LogEntry logEntry  = null;
            var      exception = new Exception("Some random exception");
            var      eventId   = new EventId(15, "SomeEvent");
            var      state     = new Dictionary <string, string>();

            var loggerMock = new Mock <ILogger>();

            loggerMock.Setup(lm => lm.Level).Returns(LogLevel.Debug);
            loggerMock
            .Setup(lm => lm.Log(It.IsAny <LogEntry>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int>()))
            .Callback <LogEntry, string, string, int>((le, s1, s2, i) => logEntry = le);

            var rlLogger = new RockLibLogger(loggerMock.Object, "SomeCategory");

            rlLogger.Log(MSE.LogLevel.Debug, eventId, state, exception, (dictionary, ex) => "Simple message");

            logEntry.Should().NotBeNull();
            logEntry.Level.Should().Be(LogLevel.Debug);
            logEntry.Message.Should().Be("Simple message");
            logEntry.Exception.Should().BeSameAs(exception);

            logEntry.ExtendedProperties["Microsoft.Extensions.Logging.EventId"].Should().Be(eventId);
            logEntry.ExtendedProperties["Microsoft.Extensions.Logging.State"].Should().Be(state);
            logEntry.ExtendedProperties["Microsoft.Extensions.Logging.CategoryName"].Should().Be("SomeCategory");
        }
Esempio n. 2
0
        public void LogMethodHappyPath2()
        {
            var mockLogger    = new MockLogger(LogLevel.Fatal);
            var scopeProvider = new TestScopeProvider {
                State = "MyState"
            };

            var rockLibLogger = new RockLibLogger(mockLogger.Object, "MyCategory", scopeProvider);

            var ex      = new Exception();
            var eventId = new EventId(123);

            string    capturedState     = null;
            Exception capturedException = null;

            rockLibLogger.Log(Warning, eventId, "Hello, world!", ex, Format);

            mockLogger.VerifyWarn(Times.Never());

            capturedState.Should().BeNull();
            capturedException.Should().BeNull();

            string Format(string state, Exception exception)
            {
                capturedState     = state;
                capturedException = exception;
                return("formatted");
            }
        }
        public void LogDoesNotAddEmptyScopeToExtendedProperties()
        {
            LogEntry logEntry  = null;
            var      exception = new Exception("Some random exception");
            var      eventId   = new EventId(15, "SomeEvent");
            var      state     = new Dictionary <string, string>();

            var loggerMock = new Mock <ILogger>();

            loggerMock.Setup(lm => lm.Level).Returns(LogLevel.Debug);
            loggerMock
            .Setup(lm => lm.Log(It.IsAny <LogEntry>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int>()))
            .Callback <LogEntry, string, string, int>((le, s1, s2, i) => logEntry = le);

            var rlLogger = new RockLibLogger(loggerMock.Object, "SomeCategory");

            using (rlLogger.BeginScope("a"))
                using (rlLogger.BeginScope("b"))
                    using (rlLogger.BeginScope("c"))
                    {
                    }

            rlLogger.Log(MSE.LogLevel.Debug, eventId, state, exception, (dictionary, ex) => "Simple message");

            logEntry.ExtendedProperties.Should().NotContainKey("Microsoft.Extensions.Logging.Scope");
        }
Esempio n. 4
0
        public void IsEnabledInfodHappyPath2(LogLevel loggerLogLevel, MicrosoftLogLevel inputLogLevel, bool expectedValue)
        {
            var logger = new MockLogger(loggerLogLevel).Object;

            var rockLibLogger = new RockLibLogger(logger, "MyCategory", null);

            rockLibLogger.IsEnabled(inputLogLevel).Should().Be(expectedValue);
        }
Esempio n. 5
0
        public void LogMethodSadPath()
        {
            var logger = new MockLogger().Object;

            var rockLibLogger = new RockLibLogger(logger, "MyCategory", null);

            rockLibLogger.Invoking(x =>
                                   x.Log(Warning, new EventId(123), "Hello, world!", new Exception(), null))
            .Should().ThrowExactly <ArgumentNullException>("*formatter*");
        }
Esempio n. 6
0
        public void ConstructorHappyPath2()
        {
            var logger = new MockLogger().Object;

            var rockLibLogger = new RockLibLogger(logger, "MyCategory", null);

            rockLibLogger.Logger.Should().BeSameAs(logger);
            rockLibLogger.CategoryName.Should().Be("MyCategory");
            rockLibLogger.ScopeProvider.Should().BeNull();
        }
Esempio n. 7
0
        public void BeginScopeMethodHappyPath2()
        {
            var logger = new MockLogger().Object;

            var rockLibLogger = new RockLibLogger(logger, "MyCategory", null);

            var token = rockLibLogger.BeginScope("Hello, world!");

            token.Should().BeNull();
        }
Esempio n. 8
0
        public void IsEnabledMethodHappyPath1()
        {
            var logger = new MockLogger().Object;

            var rockLibLogger = new RockLibLogger(logger, "MyCategory", null);

            var isEnabled = rockLibLogger.IsEnabled(None);

            isEnabled.Should().BeFalse();
        }
        public void RockLibLoggerIsEnabledCallsILoggerIsEnabled(LogLevel rlLogLevel, MSE.LogLevel mseLogLevel, bool shouldBeEnabled)
        {
            var loggerMock = new Mock <ILogger>();

            loggerMock.Setup(lm => lm.IsDisabled).Returns(false);
            loggerMock.Setup(lm => lm.Level).Returns(rlLogLevel);

            var rlLogger = new RockLibLogger(loggerMock.Object, null);

            rlLogger.IsEnabled(mseLogLevel).Should().Be(shouldBeEnabled);
        }
        public void LogThrowsWithNullFormatter()
        {
            var loggerMock = new Mock <ILogger>();

            var rlLogger = new RockLibLogger(loggerMock.Object, null);

            Action action = () =>
                            rlLogger.Log(MSE.LogLevel.None, new EventId(1), new Dictionary <string, string>(), null, null);

            action.Should().Throw <ArgumentNullException>().WithMessage("Value cannot be null.\r\nParameter name: formatter");
        }
Esempio n. 11
0
        public void ConstructorHappyPath1()
        {
            var logger        = new MockLogger().Object;
            var scopeProvider = new Mock <IExternalScopeProvider>().Object;

            var rockLibLogger = new RockLibLogger(logger, "MyCategory", scopeProvider);

            rockLibLogger.Logger.Should().BeSameAs(logger);
            rockLibLogger.CategoryName.Should().Be("MyCategory");
            rockLibLogger.ScopeProvider.Should().BeSameAs(scopeProvider);
        }
        public void LogDoesNothingWhenDisabled()
        {
            var loggerMock = new Mock <ILogger>();

            loggerMock.Setup(lm => lm.IsDisabled).Returns(true);

            var rlLogger = new RockLibLogger(loggerMock.Object, null);

            rlLogger.Log(MSE.LogLevel.None, new EventId(1), new Dictionary <string, string>(), null, (dictionary, exception) => "");

            loggerMock.Verify(lm => lm.IsDisabled, Times.Once);
            loggerMock.VerifyNoOtherCalls();
        }
Esempio n. 13
0
        public void BeginScopeMethodHappyPath1()
        {
            var expectedToken     = new Mock <IDisposable>().Object;
            var mockScopeProvider = new Mock <IExternalScopeProvider>();

            mockScopeProvider.Setup(m => m.Push(It.IsAny <object>())).Returns(expectedToken);
            var logger = new MockLogger().Object;

            var rockLibLogger = new RockLibLogger(logger, "MyCategory", mockScopeProvider.Object);

            var token = rockLibLogger.BeginScope("Hello, world!");

            mockScopeProvider.Verify(m => m.Push("Hello, world!"), Times.Once());
            token.Should().BeSameAs(expectedToken);
        }
        public void BeginScopeAddsObjectToTheScopeStack()
        {
            var loggerMock = new Mock <ILogger>();

            var rlLogger = new RockLibLogger(loggerMock.Object, null);

            rlLogger.GetScope().Should().BeEmpty();

            rlLogger.BeginScope("a");
            rlLogger.GetScope().Should().Equal(new object[] { "a" });

            rlLogger.BeginScope("b");
            rlLogger.GetScope().Should().Equal(new object[] { "b", "a" });

            rlLogger.BeginScope("c");
            rlLogger.GetScope().Should().Equal(new object[] { "c", "b", "a" });
        }
        public void DisposingTheObjectReturnedFromBeginScopePopsTheScopeStack()
        {
            var loggerMock = new Mock <ILogger>();

            var rlLogger = new RockLibLogger(loggerMock.Object, null);

            using (rlLogger.BeginScope("a"))
            {
                using (rlLogger.BeginScope("b"))
                {
                    using (rlLogger.BeginScope("c"))
                    {
                        rlLogger.GetScope().Should().Equal(new object[] { "c", "b", "a" });
                    }
                    rlLogger.GetScope().Should().Equal(new object[] { "b", "a" });
                }
                rlLogger.GetScope().Should().Equal(new object[] { "a" });
            }

            rlLogger.GetScope().Should().BeEmpty();
        }
Esempio n. 16
0
        public void LogMethodHappyPath1()
        {
            var mockLogger    = new MockLogger(LogLevel.Warn);
            var scopeProvider = new TestScopeProvider {
                State = "MyState"
            };

            var rockLibLogger = new RockLibLogger(mockLogger.Object, "MyCategory", scopeProvider);

            var ex      = new Exception();
            var eventId = new EventId(123);

            string    capturedState     = null;
            Exception capturedException = null;

            rockLibLogger.Log(Warning, eventId, "Hello, world!", ex, Format);

            var extendedProperties = new Dictionary <string, object>
            {
                ["Microsoft.Extensions.Logging.EventId"]      = eventId,
                ["Microsoft.Extensions.Logging.State"]        = "^Hello, world!$",
                ["Microsoft.Extensions.Logging.CategoryName"] = "^MyCategory$",
                ["Microsoft.Extensions.Logging.Scope"]        = new object[] { "^MyState$" }
            };

            mockLogger.VerifyWarn("^formatted$", extendedProperties, Times.Once());

            capturedState.Should().Be("Hello, world!");
            capturedException.Should().BeSameAs(ex);

            string Format(string state, Exception exception)
            {
                capturedState     = state;
                capturedException = exception;
                return("formatted");
            }
        }
 public static object[] GetScope(this RockLibLogger rockLibLogger) => rockLibLogger.Unlock().GetScope();