예제 #1
0
        public void ContextLoggerOutputsSummaryCorrectly(LogLevel[] levels, LogLevel expectedLevel, string expectedMessage)
        {
            const string message = "This is a test";

            using var context = new ActionContext("default", "TestContext");
            Thread.Sleep(10);

            var logger = new ContextLogger(context);

            foreach (var level in levels)
            {
                logger.Log(level, message);
            }

            var summary = logger.GetSummaryLogEntry();

            Assert.NotNull(logger);
            Assert.Equal(levels.Length, logger.LogEntries.Count);
            Assert.Equal(context.Info.ContextName, summary.ContextName);
            Assert.Equal(context.Info.Id, summary.ContextId);
            Assert.Equal(expectedLevel, summary.LogLevel);
            Assert.StartsWith($"The context '{context.Info.ContextName}' ended {expectedMessage}", summary.Message);
            Assert.True(summary.TimeElapsed.TotalMilliseconds > 10);
        }