diff options
Diffstat (limited to 'Software/Visual_Studio/Utilities/Tango.LogViewer.UI/ViewModels/MainViewVM.cs')
| -rw-r--r-- | Software/Visual_Studio/Utilities/Tango.LogViewer.UI/ViewModels/MainViewVM.cs | 65 |
1 files changed, 26 insertions, 39 deletions
diff --git a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/ViewModels/MainViewVM.cs b/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/ViewModels/MainViewVM.cs index 5f4b77fc3..cb4a8d49e 100644 --- a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/ViewModels/MainViewVM.cs @@ -13,13 +13,13 @@ using System.ComponentModel; using System.Windows.Data; using System.Diagnostics; using System.IO; -using System.Text.RegularExpressions; -using System.Globalization; +using Tango.LogViewer.UI.LogViewerFileParser; namespace Tango.LogViewer.UI.ViewModels { public class MainViewVM: ViewModel { + private ILogViewerParser _parser; #region Properties public SelectedObjectCollection<LogCategory> SelectedLogCategories { get; set; } @@ -128,7 +128,17 @@ namespace Tango.LogViewer.UI.ViewModels set{ _message = value; RaisePropertyChangedAuto(); } } + private bool _isEmbeddedLog; + public bool IsEmbeddedLog + { + get { return _isEmbeddedLog; } + set { _isEmbeddedLog = value; + RaisePropertyChangedAuto(); + } + } + + #endregion public RelayCommand OpeFileLogCommand { get; set; } @@ -151,7 +161,7 @@ namespace Tango.LogViewer.UI.ViewModels LogCategory.Critical, LogCategory.Debug, }); - + IsEmbeddedLog = false; ClearFilters(); OpeFileLogCommand = new RelayCommand(OpenLogFile); SelectedLogCategories.SynchedSource.CollectionChanged += (_, __) => @@ -224,6 +234,16 @@ namespace Tango.LogViewer.UI.ViewModels List<LogFile> logFiles = new List<LogFile>(); string fileName = Path.GetFileNameWithoutExtension(logFile.File); FileName = fileName; + IsEmbeddedLog = fileName.StartsWith("Embedded"); + if (IsEmbeddedLog) + { + _parser = new EmbeddedLogViewerParser(); + } + else + { + _parser = new ApplicationLogViewerParser(); + } + if (logFile.PartOfSet) { string extension = Path.GetExtension(logFile.File); @@ -239,51 +259,18 @@ namespace Tango.LogViewer.UI.ViewModels CountOfSet = fileEntries.Length; foreach (var file in fileEntries) { - Parse(file, logFile.DateTime, ref logItems); + _parser.Parse(file, logFile.DateTime, ref logItems); } } else { CountOfSet = 1; - Parse(logFile.File, logFile.DateTime, ref logItems); + _parser.Parse(logFile.File, logFile.DateTime, ref logItems); } return logItems; } - - /// <summary> - /// Parses the specified file. Return list of MessageLogItem objects. - /// </summary> - private void Parse(string file, DateTime datetime, ref List<LogItemBase> 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, @"\[(.*?)\]"); - - MessageLogItem item = new MessageLogItem(); - item.TimeStamp = new DateTime(datetime.Year, datetime.Month, datetime.Day, date.Hour, date.Minute, date.Second, date.Millisecond); - item.Category = (LogCategory)Enum.Parse(typeof(LogCategory), entries[1]); - item.CallerFile = entries[3]; - item.CallerMethodName = entries[5]; - item.CallerLineNumber = int.Parse(entries[7]); - item.Message = new String(entries[8].Skip(2).ToArray()); - - logItems.Add(item); - } - catch (Exception ex) - { - LogManager.Default.Log(ex, "Could not parse log line: " + logs[i]); - } - } - } + #endregion #region Filtering |
