using System; using System.Collections.Generic; using System.Globalization; using System.IO; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using Tango.Integration.Logging; using Tango.Logging; namespace Tango.LogViewer.UI.LogViewerFileParser { public class EmbeddedLogViewerParser : ILogViewerParser { public EmbeddedLogViewerParser() { } public void Parse(string file, DateTime datetime, ref List logItems) { String text = File.ReadAllText(file); var logs = Regex.Split(text, @"(\[\d{2}:\d{2}:\d{2}.\d{2}\])"); for (int i = 1; i < logs.Length; i += 2) { try { DateTime date = DateTime.ParseExact(logs[i].Replace("[", "").Replace("]", ""), "HH:mm:ss.ff", CultureInfo.InvariantCulture); String rest = logs[i + 1]; var entries = Regex.Split(rest, @"\[(.*?)\]"); LogItemBase item = new EmbeddedLogItem(new PMR.Debugging.StartDebugLogResponse() { Category = (PMR.Debugging.DebugLogCategory)Enum.Parse(typeof(PMR.Debugging.DebugLogCategory), entries[1]), FileName = entries[3], LineNumber = uint.Parse(entries[5]), ModuleId = uint.Parse(entries[7]), Filter = uint.Parse(entries[9]), Message = new String(entries[10].Skip(2).ToArray()) }); item.TimeStamp = new DateTime(datetime.Year, datetime.Month, datetime.Day, date.Hour, date.Minute, date.Second, date.Millisecond); logItems.Add(item); } catch (Exception ex) { //LogManager.Default.Log(ex, "Could not parse log line: " + logs[i]); } } } } }