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"); }
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"); }
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); }
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*"); }
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(); }
public void BeginScopeMethodHappyPath2() { var logger = new MockLogger().Object; var rockLibLogger = new RockLibLogger(logger, "MyCategory", null); var token = rockLibLogger.BeginScope("Hello, world!"); token.Should().BeNull(); }
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"); }
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(); }
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(); }
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();