コード例 #1
0
        public void PerformanceTest()
        {
            using var fs     = new FileStream(new Guid().ToString(), FileMode.OpenOrCreate, FileAccess.ReadWrite);
            using var logger = new AsyncFileLogger(fs);
            const int times = 1_000_000;

            Task.WaitAll(logger.Writing(1, times), logger.Writing(2, times), logger.Writing(3, times));
            Debug.WriteLine(LoggingManager.Logs.Count());
            Assert.AreEqual(times * 3, LoggingManager.Logs.Count());
            LoggingManager.Free();
        }
コード例 #2
0
        public void TestWriteLog()
        {
            _logger = new AsyncFileLogger();
            var id = Guid.NewGuid();

            _logger.Log(LogLevel.Information, $"Hello from testing {id.ToString()}");
            _logger.StopAndFlush();
            var logFiles     = Directory.GetFiles("logs");
            var fileContents = File.ReadAllText(logFiles[0]);

            Assert.IsTrue(fileContents.Contains(id.ToString()));
        }
コード例 #3
0
        public void TestStopAndFlush()
        {
            _logger = new AsyncFileLogger();

            for (int i = 0; i < 15; i++)
            {
                _logger.Log(LogLevel.Information, "Number with Flush: " + i.ToString());
            }

            _logger.StopAndFlush();
            var logFiles     = Directory.GetFiles("logs");
            var fileContents = File.ReadAllLines(logFiles[0]);

            Assert.AreEqual(fileContents.Length, 15);
        }
コード例 #4
0
        public void IsStopWithoutFlushWorks()
        {
            var mockFileSystem = new MockFileSystem();

            var asyncFileLogger = new AsyncFileLogger(mockFileSystem, new LogFile());

            for (int i = 0; i < 100; i++)
            {
                asyncFileLogger.Write("Number without Flush: " + i.ToString());
            }

            asyncFileLogger.StopWithoutFlush();

            var    fileNames = mockFileSystem.Directory.GetFiles(@"C:\LogTest\");
            string fileText  = mockFileSystem.File.ReadAllText(fileNames.First());

            Assert.IsTrue(!fileText.Contains("Number without Flush: 99"));

            int numberOfLines = mockFileSystem.File.ReadAllLines(fileNames.First()).Count();

            Assert.IsTrue(numberOfLines < 100);
            Assert.IsTrue(numberOfLines > 1);
        }
コード例 #5
0
        public void IsStopWithFlushWorks()
        {
            MockFileSystem mockFileSystem = new MockFileSystem();

            ILog asyncFileLogger = new AsyncFileLogger(mockFileSystem, new LogFile());

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

            asyncFileLogger.StopWithFlush();

            var    fileNames = mockFileSystem.Directory.GetFiles(@"C:\LogTest\");
            string fileText  = mockFileSystem.File.ReadAllText(fileNames.First());

            //Assert.AreEqual("Number with Flush: 49", fileText);
            Assert.IsTrue(fileText.Contains("Number with Flush: 49"));

            int numberOfLines = mockFileSystem.File.ReadAllLines(fileNames.First()).Count();

            Assert.AreEqual(51, numberOfLines);
        }
コード例 #6
0
ファイル: Program.cs プロジェクト: NicolaeGP/MyLogger
        static void Main(string[] args)
        {
            AsyncFileLogger logger = new AsyncFileLogger();

            for (int i = 0; i < 15; i++)
            {
                logger.Log(LogLevel.Information, "Number with Flush: " + i.ToString());
                Thread.Sleep(50);
            }

            logger.StopAndFlush();
            AsyncFileLogger logger2 = new AsyncFileLogger();

            for (int i = 50; i > 0; i--)
            {
                logger2.Log(LogLevel.Information, "Number with No flush: " + i.ToString());
                Thread.Sleep(20);
            }

            logger2.Stop();

            Console.ReadLine();
        }
コード例 #7
0
ファイル: Program.cs プロジェクト: winpunk/Async-Logger
        private static void Main(string[] args)
        {
            ILog logger = new AsyncFileLogger();

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

            logger.StopWithFlush();

            ILog logger2 = new AsyncFileLogger();

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

            logger2.StopWithoutFlush();

            Console.ReadLine();
        }
コード例 #8
0
        public void TestMidnightLog()
        {
            var dateTimeMock = new Mock <IDateTime>();

            dateTimeMock.Setup(fake => fake.Now()).Returns(DateTime.Now);
            _logger = new AsyncFileLogger(dateTimeProvider: dateTimeMock.Object);

            _logger.Log(LogLevel.Information, $"Hello from testing midnight now");
            Thread.Sleep(1000);

            dateTimeMock.Setup(fake => fake.Now()).Returns(DateTime.Now.AddDays(1));

            _logger.Log(LogLevel.Information, $"Hello from testing midnight tomorrow");
            _logger.StopAndFlush();

            var logFiles = Directory.GetFiles("logs");

            Assert.AreEqual(logFiles.Length, 2);
            var fileContents1 = File.ReadAllText(logFiles[0]);
            var fileContents2 = File.ReadAllText(logFiles[1]);

            Assert.IsTrue(fileContents1.Contains("Hello from testing midnight now"));
            Assert.IsTrue(fileContents2.Contains("Hello from testing midnight tomorrow"));
        }