public void EventQueueGrow_OnQueueGrow() { int queueLimit = 2; int loggedEventCount = 10; int expectedGrowingNumber = 0; #if NETCOREAPP2_0 expectedGrowingNumber = loggedEventCount - queueLimit; #else expectedGrowingNumber = 3; #endif int eventsCounter = 0; var myTarget = new MyTarget(); var targetWrapper = new AsyncTargetWrapperForEventTests() { WrappedTarget = myTarget, QueueLimit = queueLimit, TimeToSleepBetweenBatches = 500, // Make it slow OverflowAction = AsyncTargetWrapperOverflowAction.Grow, }; var logFactory = new LogFactory(); var loggingConfig = new NLog.Config.LoggingConfiguration(logFactory); loggingConfig.AddRuleForAllLevels(targetWrapper); logFactory.Configuration = loggingConfig; var logger = logFactory.GetLogger("Test"); try { targetWrapper.EventQueueGrow += (o, e) => { eventsCounter++; }; for (int i = 0; i < loggedEventCount; i++) { logger.Info("Hello"); } Assert.Equal(expectedGrowingNumber, eventsCounter); } finally { logFactory.Configuration = null; } }
public void LogEventDropped_OnRequestqueueOverflow() { int queueLimit = 2; int loggedEventCount = 5; int eventsCounter = 0; var myTarget = new MyTarget(); var targetWrapper = new AsyncTargetWrapperForEventTests() { WrappedTarget = myTarget, QueueLimit = queueLimit, TimeToSleepBetweenBatches = 500, // Make it slow OverflowAction = AsyncTargetWrapperOverflowAction.Discard, }; var logFactory = new LogFactory(); var loggingConfig = new NLog.Config.LoggingConfiguration(logFactory); loggingConfig.AddRuleForAllLevels(targetWrapper); logFactory.Configuration = loggingConfig; var logger = logFactory.GetLogger("Test"); try { targetWrapper.LogEventDropped += (o, e) => { eventsCounter++; }; for (int i = 0; i < loggedEventCount; i++) { logger.Info("Hello"); } Assert.Equal(loggedEventCount - queueLimit, eventsCounter); } finally { logFactory.Configuration = null; } }
public void LogEventNotDropped_IfOverflowActionGrow() { int queueLimit = 2; int loggedEventCount = 5; int eventsCounter = 0; var myTarget = new MyTarget(); var targetWrapper = new AsyncTargetWrapperForEventTests() { WrappedTarget = myTarget, QueueLimit = queueLimit, OverflowAction = AsyncTargetWrapperOverflowAction.Grow }; var logFactory = new LogFactory(); var loggingConfig = new NLog.Config.LoggingConfiguration(logFactory); loggingConfig.AddRuleForAllLevels(targetWrapper); logFactory.Configuration = loggingConfig; var logger = logFactory.GetLogger("Test"); try { targetWrapper.LogEventDropped += (o, e) => { eventsCounter++; }; for (int i = 0; i < loggedEventCount; i++) { logger.Info("Hello"); } Assert.Equal(0, eventsCounter); } finally { logFactory.Configuration = null; } }