public void CustomFilter() { var coreLogger = new FakeCoreLogger(); Func <string, LogLevel, bool> filter = (categoryName, level) => { if (string.Equals(categoryName, "goodCategory", StringComparison.OrdinalIgnoreCase) && level >= LogLevel.Warning) { return(true); } return(false); }; var logger = new AWSLogger("goodCategory", coreLogger, filter); logger.LogTrace("trace"); logger.LogWarning("warning"); Assert.Equal(1, coreLogger.ReceivedMessages.Count); Assert.True(coreLogger.ReceivedMessages.Contains("warning\r\n")); string val; while (!coreLogger.ReceivedMessages.IsEmpty) { coreLogger.ReceivedMessages.TryDequeue(out val); } logger = new AWSLogger("badCategory", coreLogger, filter); logger.LogTrace("trace"); logger.LogWarning("warning"); Assert.Equal(0, coreLogger.ReceivedMessages.Count); }
public void ValidAppsettingsFilter() { var configSection = LoggerConfigSectionSetup("ValidAppsettingsFilter.json", null).GetSection("LogLevel"); if (!(configSection != null && configSection.GetChildren().Count() > 0)) { configSection = null; } var categoryName = typeof(TestFilter).GetTypeInfo().FullName; var coreLogger = new FakeCoreLogger(); var logger = new AWSLogger( categoryName, coreLogger, AWSLoggerProvider.CreateConfigSectionFilter(configSection, categoryName)); logger.LogTrace("trace"); logger.LogDebug("debug"); logger.LogInformation("information"); logger.LogWarning("warning"); logger.LogError("error"); logger.LogCritical("critical"); Assert.Equal(5, coreLogger.ReceivedMessages.Count); Assert.True(coreLogger.ReceivedMessages.Contains("warning\r\n")); Assert.True(coreLogger.ReceivedMessages.Contains("error\r\n")); Assert.True(coreLogger.ReceivedMessages.Contains("critical\r\n")); }
public void DefaultFilterCheck() { var configSection = LoggerConfigSectionSetup("DefaultFilterCheck.json", null).GetSection("LogLevel"); if (!(configSection != null && configSection.GetChildren().Count() > 0)) { configSection = null; } var categoryName = "AWS.Log"; var coreLogger = new FakeCoreLogger(); var logger = new AWSLogger( categoryName, coreLogger, AWSLoggerProvider.CreateConfigSectionFilter(configSection, categoryName)); logger.LogTrace("trace"); logger.LogDebug("debug"); logger.LogInformation("information"); logger.LogWarning("warning"); logger.LogError("error"); logger.LogCritical("critical"); Assert.Equal(5, coreLogger.ReceivedMessages.Count); Assert.True(coreLogger.ReceivedMessages.Contains("warning")); Assert.True(coreLogger.ReceivedMessages.Contains("error")); Assert.True(coreLogger.ReceivedMessages.Contains("critical")); }
public void MissingLogLevelCheck() { var configSection = LoggerConfigSectionSetup("MissingLogLevelCheck.json", null).GetSection("LogLevel"); if (!(configSection != null && configSection.GetChildren().Count() > 0)) { configSection = null; } var categoryName = typeof(TestFilter).GetTypeInfo().FullName; var coreLogger = new FakeCoreLogger(); var logger = new AWSLogger( categoryName, coreLogger, AWSLoggerProvider.CreateConfigSectionFilter(configSection, categoryName)); logger.LogTrace("trace"); logger.LogDebug("debug"); logger.LogInformation("information"); logger.LogWarning("warning"); logger.LogError("error"); logger.LogCritical("critical"); Assert.Equal(6, coreLogger.ReceivedMessages.Count); Assert.Contains($"[Warning] AWS.Logger.AspNetCore.Tests.TestFilter: warning{Environment.NewLine}", coreLogger.ReceivedMessages); Assert.Contains($"[Error] AWS.Logger.AspNetCore.Tests.TestFilter: error{Environment.NewLine}", coreLogger.ReceivedMessages); Assert.Contains($"[Critical] AWS.Logger.AspNetCore.Tests.TestFilter: critical{Environment.NewLine}", coreLogger.ReceivedMessages); }
public void ExceptionMockTest() { var categoryName = "testlogging"; var coreLogger = new FakeCoreLogger(); Logger = new AWSLogger( categoryName, coreLogger, null); var logMessageCount = 10; LogMessages(logMessageCount); Assert.Contains($"[Error] testlogging: Error message System.Exception: Exception message.{Environment.NewLine}", coreLogger.ReceivedMessages); }
// Althrough scoping isn't currently supported make sure that at least it doesn't cause // issues if it is used. public void MakeSureCanCreateScope() { var coreLogger = new FakeCoreLogger(); var logger = new AWSLogger("MakeSureCanCreateScope", coreLogger, null); using (var scope = logger.BeginScope <TestScope>(this)) { logger.LogInformation("log"); } Assert.Equal(1, coreLogger.ReceivedMessages.Count); Assert.True(coreLogger.ReceivedMessages.Contains("log")); }
public void ExceptionMockTest() { var categoryName = "testlogging"; var coreLogger = new FakeCoreLogger(); Logger = new AWSLogger( categoryName, coreLogger, null); var tasks = new List <Task>(); var logMessageCount = 10; LogMessages(logMessageCount); Assert.True(coreLogger.ReceivedMessages.Contains("Error message\r\nSystem.Exception: Exception message.\r\n")); }
// Make sure that a message will be logged inside a scope, even when scopes are not included. public void MakeSureCanCreateScope() { var coreLogger = new FakeCoreLogger(); var logger = new AWSLogger("MakeSureCanCreateScope", coreLogger, null) { IncludeScopes = false }; using (logger.BeginScope("Test Scope")) { logger.LogInformation("log"); } Assert.Single(coreLogger.ReceivedMessages); Assert.True(coreLogger.ReceivedMessages.Contains("log\r\n"), "Messages don't contain actual log message."); }
// Make sure that a message will be logged outside a scope, even when scopes are included. public void MakeSureCanLogWithoutScope() { var coreLogger = new FakeCoreLogger(); var logger = new AWSLogger("MakeSureCanCreateScope", coreLogger, null) { IncludeScopes = true }; logger.LogInformation("log"); Assert.Single(coreLogger.ReceivedMessages); var msg = coreLogger.ReceivedMessages.SingleOrDefault(m => m.Contains($"[Information] MakeSureCanCreateScope: log{Environment.NewLine}")); Assert.True(msg != null, "Messages don't contain actual log message."); Assert.False(msg.Contains("=>"), "Fragment of scopes exists (\"=>\")."); }
public void CustomFormatter_Must_Be_Applied(string message, LogLevel logLevel) { Func <LogLevel, object, Exception, string> customFormatter = (level, state, ex) => level + "hello world" + state.ToString(); Func <string, LogLevel, bool> filter = (categoryName, level) => true; var coreLogger = new FakeCoreLogger(); var logger = new AWSLogger("TestCategory", coreLogger, filter, customFormatter); logger.Log(logLevel, 0, message, null, (state, ex) => state.ToString()); string expectedMessage = customFormatter(logLevel, message, null); Assert.Equal(expectedMessage, coreLogger.ReceivedMessages.First()); }
public void FilterLogLevel() { var coreLogger = new FakeCoreLogger(); var logger = new AWSLogger("FilterLogLevel", coreLogger, AWSLoggerProvider.CreateLogLevelFilter(LogLevel.Warning)); logger.LogTrace("trace"); logger.LogDebug("debug"); logger.LogInformation("information"); logger.LogWarning("warning"); logger.LogError("error"); logger.LogCritical("critical"); Assert.Equal(3, coreLogger.ReceivedMessages.Count); Assert.True(coreLogger.ReceivedMessages.Contains("warning\r\n")); Assert.True(coreLogger.ReceivedMessages.Contains("error\r\n")); Assert.True(coreLogger.ReceivedMessages.Contains("critical\r\n")); }
public void FilterLogLevel() { var coreLogger = new FakeCoreLogger(); var logger = new AWSLogger("FilterLogLevel", coreLogger, AWSLoggerProvider.CreateLogLevelFilter(LogLevel.Warning)); logger.LogTrace("trace"); logger.LogDebug("debug"); logger.LogInformation("information"); logger.LogWarning("warning"); logger.LogError("error"); logger.LogCritical("critical"); Assert.Equal(3, coreLogger.ReceivedMessages.Count); Assert.Contains($"[Warning] FilterLogLevel: warning{Environment.NewLine}", coreLogger.ReceivedMessages); Assert.Contains($"[Error] FilterLogLevel: error{Environment.NewLine}", coreLogger.ReceivedMessages); Assert.Contains($"[Critical] FilterLogLevel: critical{Environment.NewLine}", coreLogger.ReceivedMessages); }
// Make sure that a message inside a scope will be logged together with the scope. public void MakeSureScopeIsIncluded() { var coreLogger = new FakeCoreLogger(); var logger = new AWSLogger("MakeSureCanCreateScope", coreLogger, null) { IncludeScopes = true }; using (logger.BeginScope("Test scope")) { logger.LogInformation("log"); } Assert.Single(coreLogger.ReceivedMessages); var msg = coreLogger.ReceivedMessages.SingleOrDefault(m => m.Contains("log\r\n")); Assert.True(msg != null, "Messages don't contain actual log message."); // Same message should contain the scope Assert.True(msg.Contains("=> Test scope: "), "Scope is not included."); }
public void MultiThreadTestMock() { var categoryName = "testlogging"; var coreLogger = new FakeCoreLogger(); Logger = new AWSLogger( categoryName, coreLogger, null); var tasks = new List <Task>(); var logMessageCount = 200; var actualCount = 0; for (int i = 0; i < 2; i++) { tasks.Add(Task.Factory.StartNew(() => LogMessages(logMessageCount))); actualCount = actualCount + logMessageCount; } Task.WaitAll(tasks.ToArray()); Assert.Equal(actualCount, coreLogger.ReceivedMessages.Count); }
public void MultiThreadTestMock() { var categoryName = "testlogging"; var coreLogger = new FakeCoreLogger(); logger = new AWSLogger( categoryName, coreLogger, null); var tasks = new List <Task>(); var streamNames = new List <string>(); var count = 200; int i = 0; var totcount = 0; for (i = 0; i < 2; i++) { tasks.Add(Task.Factory.StartNew(() => ILoggerThread(count))); totcount = totcount + count; } Task.WaitAll(tasks.ToArray()); Assert.Equal(totcount, coreLogger.ReceivedMessages.Count); }
// Make sure that a message inside multiple scopes will be logged together with the scopes. public void MakeSureScopesAreIncluded() { var coreLogger = new FakeCoreLogger(); var logger = new AWSLogger("MakeSureCanCreateScope", coreLogger, null) { IncludeScopes = true }; using (logger.BeginScope("OuterScope")) { using (logger.BeginScope("InnerScope")) { logger.LogInformation("log"); } } Assert.Single(coreLogger.ReceivedMessages); var msg = coreLogger.ReceivedMessages.SingleOrDefault(m => m.Contains($"[Information] OuterScope InnerScope => MakeSureCanCreateScope: log{Environment.NewLine}")); Assert.True(msg != null, "Messages don't contain actual log message."); // Same message should contain the scope Assert.True(msg.Contains("OuterScope"), "Outer scope is not included."); Assert.True(msg.Contains("InnerScope"), "Inner scope is not included."); }