public override Task SaveAsync(List <AnalogyLogMessage> messages, string fileName) => Task.Factory.StartNew(async() => { if (fileName.EndsWith(".ajson", StringComparison.InvariantCultureIgnoreCase)) { AnalogyJsonLogFile logFile = new AnalogyJsonLogFile(); await logFile.Save(messages, fileName); } else if (fileName.EndsWith(".abin", StringComparison.InvariantCultureIgnoreCase)) { AnalogyMessagePackFormat logFile = new AnalogyMessagePackFormat(); await logFile.Save(messages, fileName); } });
public async Task <IEnumerable <AnalogyLogMessage> > Process(string fileName, CancellationToken token, ILogMessageCreatedHandler messagesHandler) { if (fileName.EndsWith(".axml", StringComparison.InvariantCultureIgnoreCase)) { AnalogyXmlLogFile logFile = new AnalogyXmlLogFile(); var messages = await logFile.ReadFromFile(fileName, token, messagesHandler); return(messages); } if (fileName.EndsWith(".ajson", StringComparison.InvariantCultureIgnoreCase)) { AnalogyJsonLogFile logFile = new AnalogyJsonLogFile(); var messages = await logFile.ReadFromFile(fileName, token, messagesHandler); return(messages); } if (fileName.EndsWith(".abin", StringComparison.InvariantCultureIgnoreCase)) { AnalogyMessagePackFormat logFile = new AnalogyMessagePackFormat(); var messages = await logFile.ReadFromFile(fileName, token, messagesHandler); return(messages); } else { AnalogyLogMessage m = new AnalogyLogMessage { Text = $"Unsupported file: {fileName}. Skipping file", Level = AnalogyLogLevel.Critical, Source = "Analogy", Module = System.Diagnostics.Process.GetCurrentProcess().ProcessName, ProcessId = System.Diagnostics.Process.GetCurrentProcess().Id, MachineName = Environment.MachineName, Class = AnalogyLogClass.General, User = Environment.UserName, Date = DateTime.Now }; messagesHandler.AppendMessage(m, Environment.MachineName); return(new List <AnalogyLogMessage>() { m }); } }
public async Task TestWriteAndRead() { string fileName = "test.bin"; cancellationTokenSource = new CancellationTokenSource(); AnalogyMessagePackFormat msgPack = new AnalogyMessagePackFormat(); List <AnalogyLogMessage> originals = new List <AnalogyLogMessage> { new AnalogyLogMessage("test1", AnalogyLogLevel.Critical, AnalogyLogClass.General, "test"), new AnalogyLogMessage("test2", AnalogyLogLevel.Error, AnalogyLogClass.General, "test") }; await msgPack.Save(originals, fileName); Assert.IsTrue(File.Exists(fileName)); MessageHandlerForTesting handler = new MessageHandlerForTesting(); var msg = (await msgPack.ReadFromFile(fileName, cancellationTokenSource.Token, handler)).ToList(); Assert.IsTrue(msg.Count == 2); Assert.IsTrue(msg.First().Level == AnalogyLogLevel.Critical); Assert.IsTrue(msg.Skip(1).First().Text == "test2"); File.Delete(fileName); }