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(); }
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())); }
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); }
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); }
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); }
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(); }
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(); }
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")); }