From 112fc0501b635b769f875f32f34c22041f25836e Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Wed, 10 Oct 2018 18:27:18 +0300 Subject: Implemented Log Category Filters to logging module. --- .../ViewModels/ApplicationLogsViewVM.cs | 59 ++++++++++++++++------ .../Views/ApplicationLogsView.xaml | 28 ++++++++-- 2 files changed, 67 insertions(+), 20 deletions(-) (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Logging') diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Logging/ViewModels/ApplicationLogsViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Logging/ViewModels/ApplicationLogsViewVM.cs index b0bc613bd..3e0e3ab84 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Logging/ViewModels/ApplicationLogsViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Logging/ViewModels/ApplicationLogsViewVM.cs @@ -13,6 +13,7 @@ using Tango.MachineStudio.Logging.Navigation; using Tango.MachineStudio.Logging.Parsing; using Tango.MachineStudio.Logging.Views; using Tango.SharedUI; +using Tango.SharedUI.Components; namespace Tango.MachineStudio.Logging.ViewModels { @@ -41,6 +42,8 @@ namespace Tango.MachineStudio.Logging.ViewModels set { _logsViewSource = value; RaisePropertyChangedAuto(); } } + public SelectedObjectCollection SelectedLogCategories { get; set; } + private String _filter; public String Filter { @@ -118,22 +121,7 @@ namespace Tango.MachineStudio.Logging.ViewModels { _realTimePaused = value; RaisePropertyChangedAuto(); - - if (!_realTimePaused) - { - LogsViewSource.Filter = null; - _realTimeLogs.InsertRange(0, _pausedLogs); - _pausedLogs.Clear(); - } - else - { - LogsViewSource.Filter = (x) => - { - if (String.IsNullOrWhiteSpace(Filter)) return true; - LogItemBase log = x as LogItemBase; - return log.Message.ToLower().Contains(Filter.ToLower()); - }; - } + ApplyLogsFilter(); } } @@ -149,6 +137,27 @@ namespace Tango.MachineStudio.Logging.ViewModels NavigateToHomeCommand = new RelayCommand(() => navigation.NavigateTo(LoggingNavigationView.HomeView)); + SelectedLogCategories = new SelectedObjectCollection(new ObservableCollection() + { + LogCategory.Info, + LogCategory.Warning, + LogCategory.Error, + LogCategory.Critical, + LogCategory.Debug, + }, new ObservableCollection() + { + LogCategory.Info, + LogCategory.Warning, + LogCategory.Error, + LogCategory.Critical, + LogCategory.Debug, + }); + + SelectedLogCategories.SynchedSource.CollectionChanged += (_, __) => + { + ApplyLogsFilter(); + }; + _parser = new ApplicationLogFileParser(); _logFiles = _parser.GetLogFiles(); @@ -177,6 +186,24 @@ namespace Tango.MachineStudio.Logging.ViewModels _is_debug = LogManager.Categories.Contains(LogCategory.Debug); } + private void ApplyLogsFilter() + { + if ((_realTimePaused && _isRealTime) || !_isRealTime) + { + LogsViewSource.Filter = (x) => + { + LogItemBase log = x as LogItemBase; + return (SelectedLogCategories.SynchedSource.Contains(log.Category) && (String.IsNullOrWhiteSpace(Filter) || log.Message.ToLower().Contains(Filter.ToLower()))); + }; + } + else + { + LogsViewSource.Filter = null; + _realTimeLogs.InsertRange(0, _pausedLogs); + _pausedLogs.Clear(); + } + } + private void LogManager_NewLog(object sender, LogItemBase log) { if (log.Category == LogCategory.Debug && !DisplayDebug) return; diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Logging/Views/ApplicationLogsView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Logging/Views/ApplicationLogsView.xaml index eeb7204d1..b67b14612 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Logging/Views/ApplicationLogsView.xaml +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Logging/Views/ApplicationLogsView.xaml @@ -78,7 +78,7 @@ -