示例#1
0
        public void WhenNotConfigured_NoEventsAreBuffered()
        {
            var roAppender = new AsyncRolloverAppender();

            roAppender.ActivateOptions();

            for (int i = 0; i < 100; i++)
            {
                roAppender.DoAppend(new LoggingEvent(new LoggingEventData {
                    Message = "test" + i
                }));
            }

            Thread.Sleep(250);
            roAppender.Close();
            Assert.That(roAppender.BufferCount, Is.EqualTo(0));
        }
        public void WhenBufferIsFull_EventsAreDiscarded()
        {
            var roAppender = new AsyncRolloverAppender();
            roAppender.MaxBufferCount = 10;
            var appender = new Mock<IAppender>();
            appender.Setup(a => a.DoAppend(It.IsAny<LoggingEvent>())).Callback(() => Thread.Sleep(1000));
            roAppender.AddAppender(appender.Object);
            roAppender.ActivateOptions();

            for (int i = 0; i < 20; i++)
            {
                roAppender.DoAppend(new LoggingEvent(new LoggingEventData { Message = "test" + i }));
            }

            roAppender.Close();
            Assert.That(roAppender.BufferCount, Is.LessThan(10 + 2));
        }
示例#3
0
        public void WhenConfigured_EventsAreSent()
        {
            var events     = new List <LoggingEvent>();
            var roAppender = new AsyncRolloverAppender();
            var appender   = new Mock <IAppender>();

            appender.Setup(a => a.DoAppend(It.IsAny <LoggingEvent>())).Callback((LoggingEvent e) => events.Add(e));
            roAppender.AddAppender(appender.Object);
            roAppender.ActivateOptions();

            roAppender.DoAppend(new LoggingEvent(new LoggingEventData {
                Message = "test1"
            }));

            Thread.Sleep(250);
            roAppender.Close();
            Assert.That(events.Count, Is.EqualTo(1));
        }
示例#4
0
        public void WhenConfigured_ResetOccurs()
        {
            var events        = new List <LoggingEvent>();
            int count         = 0;
            var roAppender    = new AsyncRolloverAppender();
            var errorAppender = new Mock <IAppender>();

            errorAppender.Setup(ea => ea.DoAppend(It.IsAny <LoggingEvent>())).Callback((LoggingEvent e) =>
            {
                count++;
                if (count == 1)
                {
                    throw new Exception("error");
                }
                events.Add(e);
            });
            var appender = new Mock <IAppender>();

            appender.Setup(a => a.DoAppend(It.IsAny <LoggingEvent>()));
            roAppender.ResetRolloverCheck = 1;
            roAppender.AddAppender(errorAppender.Object);   // First appender, will error
            roAppender.AddAppender(appender.Object);        // Next appender should be roll to on error
            roAppender.ActivateOptions();


            // Should error roll to next appender
            roAppender.DoAppend(new LoggingEvent(new LoggingEventData {
                Message = "test1"
            }));
            // wait out the reset value
            Thread.Sleep(1200);
            // Should go to the first appender
            roAppender.DoAppend(new LoggingEvent(new LoggingEventData {
                Message = "test2"
            }));

            Thread.Sleep(250);
            roAppender.Close();

            Assert.That(events.Count, Is.EqualTo(1));
            StringAssert.Contains("test2", events[0].RenderedMessage);
        }
示例#5
0
        public void WhenBufferIsFull_EventsAreDiscarded()
        {
            var roAppender = new AsyncRolloverAppender();

            roAppender.MaxBufferCount = 10;
            var appender = new Mock <IAppender>();

            appender.Setup(a => a.DoAppend(It.IsAny <LoggingEvent>())).Callback(() => Thread.Sleep(1000));
            roAppender.AddAppender(appender.Object);
            roAppender.ActivateOptions();

            for (int i = 0; i < 20; i++)
            {
                roAppender.DoAppend(new LoggingEvent(new LoggingEventData {
                    Message = "test" + i
                }));
            }

            roAppender.Close();
            Assert.That(roAppender.BufferCount, Is.LessThan(10 + 2));
        }
示例#6
0
        public void WhenConfigured_EventsAreRolledOver()
        {
            var events        = new List <LoggingEvent>();
            var roAppender    = new AsyncRolloverAppender();
            var errorAppender = new Mock <IAppender>();

            errorAppender.Setup(ea => ea.DoAppend(It.IsAny <LoggingEvent>())).Throws(new Exception("error"));
            var appender = new Mock <IAppender>();

            appender.Setup(a => a.DoAppend(It.IsAny <LoggingEvent>())).Callback((LoggingEvent e) => events.Add(e));
            roAppender.AddAppender(errorAppender.Object);   // First appender, will error
            roAppender.AddAppender(appender.Object);        // Next appender should be roll to on error
            roAppender.ActivateOptions();

            roAppender.DoAppend(new LoggingEvent(new LoggingEventData {
                Message = "test1"
            }));

            Thread.Sleep(250);
            roAppender.Close();
            Assert.That(events.Count, Is.EqualTo(1));
        }
示例#7
0
        public void WhenConfiguredWithAppenderThatSwallowsErrors_EventsAreRolledOver()
        {
            var events     = new List <LoggingEvent>();
            var roAppender = new AsyncRolloverAppender();
            var fa         = new FileAppender();

            fa.File = @"Z:\NonExistantDirectory\data.dat";
            var appender = new Mock <IAppender>();

            appender.Setup(a => a.DoAppend(It.IsAny <LoggingEvent>())).Callback((LoggingEvent e) => events.Add(e));
            roAppender.AddAppender(fa);                     // First appender, will error
            roAppender.AddAppender(appender.Object);        // Next appender should be roll to on error
            roAppender.ActivateOptions();

            roAppender.DoAppend(new LoggingEvent(new LoggingEventData {
                Message = "test1"
            }));

            Thread.Sleep(250);
            roAppender.Close();
            Assert.That(events.Count, Is.EqualTo(1));
        }
示例#8
0
        public void WhenConfigured_RolloverLoggerIsNotified()
        {
            BasicConfigurator.Configure();
            // Configure the logger and appender for rollover notification
            var    events           = new List <LoggingEvent>();
            string notifyLoggerName = "NotifyLogger";
            var    notifyLogger     = (Logger)LogManager.GetLogger(notifyLoggerName).Logger;
            var    notifyAppender   = new Mock <IAppender>();

            notifyAppender.Setup(ea => ea.DoAppend(It.IsAny <LoggingEvent>())).Callback((LoggingEvent e) => events.Add(e));
            notifyLogger.AddAppender(notifyAppender.Object);

            var roAppender    = new AsyncRolloverAppender();
            var errorAppender = new Mock <IAppender>();

            errorAppender.Setup(ea => ea.DoAppend(It.IsAny <LoggingEvent>())).Throws(new Exception("error"));
            var appender = new Mock <IAppender>();

            appender.Setup(a => a.DoAppend(It.IsAny <LoggingEvent>()));
            roAppender.RolloverNotificationLoggerName = notifyLoggerName;
            roAppender.AddAppender(errorAppender.Object);   // First appender, will error
            roAppender.AddAppender(appender.Object);        // Next appender should be roll to on error
            roAppender.ActivateOptions();


            roAppender.DoAppend(new LoggingEvent(new LoggingEventData {
                Message = "test1"
            }));

            Thread.Sleep(250);
            roAppender.Close();

            Assert.That(events.Count, Is.EqualTo(1));
            StringAssert.Contains("rolling to the next appender", events[0].MessageObject.ToString());
            appender.Verify();
        }
        public void WhenConfiguredWithAppenderThatSwallowsErrors_EventsAreRolledOver()
        {
            var events = new List<LoggingEvent>();
            var roAppender = new AsyncRolloverAppender();
            var fa = new FileAppender();
            fa.File = @"Z:\NonExistantDirectory\data.dat";
            var appender = new Mock<IAppender>();
            appender.Setup(a => a.DoAppend(It.IsAny<LoggingEvent>())).Callback((LoggingEvent e) => events.Add(e));
            roAppender.AddAppender(fa);                     // First appender, will error
            roAppender.AddAppender(appender.Object);        // Next appender should be roll to on error
            roAppender.ActivateOptions();

            roAppender.DoAppend(new LoggingEvent(new LoggingEventData { Message = "test1" }));

            Thread.Sleep(250);
            roAppender.Close();
            Assert.That(events.Count, Is.EqualTo(1));
        }
        public void WhenNotConfigured_NoEventsAreBuffered()
        {
            var roAppender = new AsyncRolloverAppender();
            roAppender.ActivateOptions();

            for (int i = 0; i < 100; i++)
            {
                roAppender.DoAppend(new LoggingEvent(new LoggingEventData {Message = "test" + i}));
            }

            Thread.Sleep(250);
            roAppender.Close();
            Assert.That(roAppender.BufferCount, Is.EqualTo(0));
        }
        public void WhenConfigured_RolloverLoggerIsNotified()
        {
            BasicConfigurator.Configure();
            // Configure the logger and appender for rollover notification
            var events = new List<LoggingEvent>();
            string notifyLoggerName = "NotifyLogger";
            var notifyLogger = (Logger)LogManager.GetLogger(notifyLoggerName).Logger;
            var notifyAppender = new Mock<IAppender>();
            notifyAppender.Setup(ea => ea.DoAppend(It.IsAny<LoggingEvent>())).Callback((LoggingEvent e) => events.Add(e));
            notifyLogger.AddAppender(notifyAppender.Object);

            var roAppender = new AsyncRolloverAppender();
            var errorAppender = new Mock<IAppender>();
            errorAppender.Setup(ea => ea.DoAppend(It.IsAny<LoggingEvent>())).Throws(new Exception("error"));
            var appender = new Mock<IAppender>();
            appender.Setup(a => a.DoAppend(It.IsAny<LoggingEvent>()));
            roAppender.RolloverNotificationLoggerName = notifyLoggerName;
            roAppender.AddAppender(errorAppender.Object);   // First appender, will error
            roAppender.AddAppender(appender.Object);        // Next appender should be roll to on error
            roAppender.ActivateOptions();

            roAppender.DoAppend(new LoggingEvent(new LoggingEventData { Message = "test1" }));

            Thread.Sleep(250);
            roAppender.Close();

            Assert.That(events.Count, Is.EqualTo(1));
            StringAssert.Contains("rolling to the next appender", events[0].MessageObject.ToString());
            appender.Verify();
        }
        public void WhenConfigured_ResetOccurs()
        {
            var events = new List<LoggingEvent>();
            int count = 0;
            var roAppender = new AsyncRolloverAppender();
            var errorAppender = new Mock<IAppender>();
            errorAppender.Setup(ea => ea.DoAppend(It.IsAny<LoggingEvent>())).Callback((LoggingEvent e) =>
                    {
                        count++;
                        if (count == 1)
                        {
                            throw new Exception("error");
                        }
                        events.Add(e);
                    });
            var appender = new Mock<IAppender>();
            appender.Setup(a => a.DoAppend(It.IsAny<LoggingEvent>()));
            roAppender.ResetRolloverCheck = 1;
            roAppender.AddAppender(errorAppender.Object);   // First appender, will error
            roAppender.AddAppender(appender.Object);        // Next appender should be roll to on error
            roAppender.ActivateOptions();

            // Should error roll to next appender
            roAppender.DoAppend(new LoggingEvent(new LoggingEventData { Message = "test1" }));
            // wait out the reset value
            Thread.Sleep(1200);
            // Should go to the first appender
            roAppender.DoAppend(new LoggingEvent(new LoggingEventData { Message = "test2" }));

            Thread.Sleep(250);
            roAppender.Close();

            Assert.That(events.Count, Is.EqualTo(1));
            StringAssert.Contains("test2", events[0].RenderedMessage);
        }
        public void WhenConfigured_EventsAreSent()
        {
            var events = new List<LoggingEvent>();
            var roAppender = new AsyncRolloverAppender();
            var appender = new Mock<IAppender>();
            appender.Setup(a => a.DoAppend(It.IsAny<LoggingEvent>())).Callback((LoggingEvent e) => events.Add(e));
            roAppender.AddAppender(appender.Object);
            roAppender.ActivateOptions();

            roAppender.DoAppend(new LoggingEvent(new LoggingEventData { Message = "test1"}));

            Thread.Sleep(250);
            roAppender.Close();
            Assert.That(events.Count, Is.EqualTo(1));
        }
        public void WhenConfigured_EventsAreRolledOver()
        {
            var events = new List<LoggingEvent>();
            var roAppender = new AsyncRolloverAppender();
            var errorAppender = new Mock<IAppender>();
            errorAppender.Setup(ea => ea.DoAppend(It.IsAny<LoggingEvent>())).Throws(new Exception("error"));
            var appender = new Mock<IAppender>();
            appender.Setup(a => a.DoAppend(It.IsAny<LoggingEvent>())).Callback((LoggingEvent e) => events.Add(e));
            roAppender.AddAppender(errorAppender.Object);   // First appender, will error
            roAppender.AddAppender(appender.Object);        // Next appender should be roll to on error
            roAppender.ActivateOptions();

            roAppender.DoAppend(new LoggingEvent(new LoggingEventData { Message = "test1" }));

            Thread.Sleep(250);
            roAppender.Close();
            Assert.That(events.Count, Is.EqualTo(1));
        }
示例#15
0
 public RolloverErrorHandler(AsyncRolloverAppender rolloverAppender, AppenderSkeleton appender)
 {
     _rolloverAppender = rolloverAppender;
     _appender         = appender;
 }
 public RolloverErrorHandler(AsyncRolloverAppender rolloverAppender, AppenderSkeleton appender)
 {
     _rolloverAppender = rolloverAppender;
     _appender = appender;
 }