public async Task StopWithoutFlush_When_Logs_Are_AlreadySaved_SimplyDoesNothing(int logsCount)
        {
            // arrange
            var logsPath = Path.Combine(Path.GetTempPath(), $"IntegrationTests-{Guid.NewGuid()}");

            using (var cut = new AsyncLogger(new List <ILogWriter> {
                new ToFileWriter(logsPath, "testLog")
            },
                                             new LoggerDateProvider()))
            {
                var logTasks = Enumerable.Range(1, logsCount)
                               .Select(i => Task.Run(() => { cut.Write($"LogMessage number {i}"); }));
                await Task.WhenAll(logTasks);

                await Task.Delay(2000); // Give some time so we are sure all logs will be written;

                // act
                cut.StopWithoutFlush();
            }
            await Task.Delay(100);

            // assert
            Assert.Equal(logsCount, File.ReadAllLines(Directory.GetFiles(logsPath)[0]).Length);
            Directory.Delete(logsPath, true);
        }
        public async Task StopWithoutFlush_Rejects_NotSavedLogs(int logsCount)
        {
            // arrange
            var logsPath = Path.Combine(Path.GetTempPath(), $"IntegrationTests-{Guid.NewGuid()}");

            using (var cut = new AsyncLogger(new List <ILogWriter> {
                new ToFileWriter(logsPath, "testLog")
            },
                                             new LoggerDateProvider()))
            {
                var logTasks = Enumerable.Range(1, logsCount)
                               .Select(i => Task.Run(() => { cut.Write($"LogMessage number {i}"); }));
                await Task.WhenAll(logTasks);

                // act
                cut.StopWithoutFlush();
            }
            await Task.Delay(100);

            // assert (Two things can happen - file did not make it to emerge yet or it did but without writing all logs.
            if (File.Exists(Path.Combine(logsPath, $"testLog_{DateTime.Today:yyyyMMdd}.log")))
            {
                Assert.NotEqual(logsCount, File.ReadAllLines(Directory.GetFiles(logsPath)[0]).Length);
            }
            Directory.Delete(logsPath, true);
        }
예제 #3
0
        public void AsyncLogger_AfterDispose_CannotCall_StopWithoutFlush()
        {
            var logsPath = Path.Combine(Path.GetTempPath(), $"IntegrationTests-{Guid.NewGuid()}");
            var cut      = new AsyncLogger(new[] { new ToFileWriter(logsPath, "testLog") }, new LoggerDateProvider());

            cut.Dispose();
            Assert.Throws <ObjectDisposedException>(() => cut.StopWithoutFlush());
        }
예제 #4
0
        private static async Task RunAppAsync()
        {
            IAsyncLogger logger = new AsyncLogger(new ILogWriter[] { new ToFileWriter("C:\\Logs", "logs") }, new LoggerDateProvider());

            for (int i = 0; i < 15; i++)
            {
                logger.Write("Number with Flush: " + i.ToString());
            }

            await logger.StopWithFlush();

            IAsyncLogger logger2 = new AsyncLogger(new ILogWriter[] { new ToFileWriter("C:\\Logs", "logs") }, new LoggerDateProvider());

            for (int i = 50; i > 0; i--)
            {
                logger2.Write("Number with No flush: " + i.ToString());
            }

            logger2.StopWithoutFlush();

            Console.ReadKey();
        }