Exemple #1
0
        public void LogWithSingleLoggerThrowing()
        {
            var level     = LevelToLog.Info;
            var exception = new LoggingException();
            var subLogger = new Mock <ILogger>();
            {
                subLogger.Setup(l => l.Level)
                .Returns(level);
                subLogger.Setup(l => l.Log(It.IsAny <LogMessage>()))
                .Throws(exception);
                subLogger.Setup(l => l.ShouldLog(It.IsAny <LogMessage>()))
                .Returns <LogMessage>(m => m.Level >= level);
            }

            var logger = new DistributedLogger(new ILogger[] { subLogger.Object });

            try
            {
                logger.Log(new LogMessage(LevelToLog.Debug, "a"));
            }
            catch (LoggingException e)
            {
                Assert.AreEqual(1, e.InnerExceptions.Count);
                Assert.AreSame(exception, e.InnerExceptions[0]);
            }
        }
Exemple #2
0
        public void LogWithMultipleLoggersWithOneThrowing()
        {
            var logger1Level     = LevelToLog.Debug;
            var logger1Exception = new LoggingException();
            var subLogger1       = new Mock <ILogger>();
            {
                subLogger1.Setup(l => l.Level)
                .Returns(logger1Level);
                subLogger1.Setup(l => l.Log(It.IsAny <LogMessage>()))
                .Throws(logger1Exception);
                subLogger1.Setup(l => l.ShouldLog(It.IsAny <LogMessage>()))
                .Returns <LogMessage>(m => m.Level >= logger1Level);
            }

            var        logger2Level   = LevelToLog.Info;
            LogMessage logger2Message = null;
            var        subLogger2     = new Mock <ILogger>();
            {
                subLogger2.Setup(l => l.Level)
                .Returns(logger2Level);
                subLogger2.Setup(l => l.Log(It.IsAny <LogMessage>()))
                .Callback <LogMessage>(m => logger2Message = m);
                subLogger2.Setup(l => l.ShouldLog(It.IsAny <LogMessage>()))
                .Returns <LogMessage>(m => m.Level >= logger2Level);
            }

            var logger = new DistributedLogger(new ILogger[] { subLogger1.Object, subLogger2.Object });

            var messageToLog = new LogMessage(LevelToLog.Info, "a");

            try
            {
                logger.Log(messageToLog);
            }
            catch (LoggingException e)
            {
                Assert.AreEqual(1, e.InnerExceptions.Count);
                Assert.AreSame(logger1Exception, e.InnerExceptions[0]);
            }

            Assert.AreSame(messageToLog, logger2Message);
        }