private void quickFilter(MessageLevel level) { string s; log.Info("Using quick filter for " + level); switch (level) { case MessageLevel.Error: s = "ERROR"; break; case MessageLevel.Warning: s = "WARN"; break; case MessageLevel.Debug: s = "DEBUG"; break; case MessageLevel.Info: s = "INFO"; break; default: throw new ArgumentOutOfRangeException("level"); } logFilter.Clear(); logFilter.Level = s; logFilter.TrimAll(); log.Info("Initializing the query objet for " + level); var query = (from e in Entries select e); if (!string.IsNullOrWhiteSpace(logFilter.Level)) { query = query.Where(e => e.Level == logFilter.Level); } var c = query.Count(); FilterIndicator.IsFiltered = c > 0 && (c != Entries.Count()); logFilter.IsFiltered = FilterIndicator.IsFiltered; LogFilter.FilteredEntries = FilterIndicator.IsFiltered ? query.ToList() : Entries; listView1.ItemsSource = logFilter.IsFiltered ? LogFilter.FilteredEntries : Entries; tbFiltered.Text = FilterIndicator.IsFiltered ? c + "/" + Entries.Count() : Entries.Count().ToString(); }
private void doMenuFilter() { log.Info("Cloning the log filter"); var tempFilter = logFilter.Clone(); var filter = new Filter(Entries, tempFilter) { Owner = this }; log.Info("Showing the filter dialog"); filter.ShowDialog(); if (filter.DialogResult != true) { return; } log.Info("Cloning the log filter again after loading new filters"); logFilter = tempFilter.Clone(); logFilter.TrimAll(); log.Info("Initializing the query object"); var query = (from e in Entries select e); if (!string.IsNullOrEmpty(logFilter.App)) { query = query.Where(e => e.App.ToUpperInvariant().Contains(logFilter.App.ToUpperInvariant())); } if (!string.IsNullOrEmpty(logFilter.Level)) { query = query.Where(e => e.Level == logFilter.Level); } if (!string.IsNullOrEmpty(logFilter.Thread)) { query = query.Where(e => e.Thread == logFilter.Thread); } if (!string.IsNullOrEmpty(logFilter.Message)) { query = query.Where(e => e.Message.ToUpperInvariant().Contains(logFilter.Message.ToUpperInvariant())); } if (!string.IsNullOrEmpty(logFilter.MachineName)) { query = query.Where(e => e.MachineName.ToUpperInvariant().Contains(logFilter.MachineName.ToUpperInvariant())); } if (!string.IsNullOrEmpty(logFilter.UserName)) { query = query.Where(e => e.UserName.ToUpperInvariant().Contains(logFilter.UserName.ToUpperInvariant())); } if (!string.IsNullOrEmpty(logFilter.HostName)) { query = query.Where(e => e.HostName.ToUpperInvariant().Contains(logFilter.HostName.ToUpperInvariant())); } if (!string.IsNullOrEmpty(logFilter.Throwable)) { query = query.Where(e => e.Throwable.ToUpperInvariant().Contains(logFilter.Throwable.ToUpperInvariant())); } if (!string.IsNullOrEmpty(logFilter.Class)) { query = query.Where(e => e.Class.ToUpperInvariant().Contains(logFilter.Class.ToUpperInvariant())); } if (!string.IsNullOrEmpty(logFilter.Method)) { query = query.Where(e => e.Method.ToUpperInvariant().Contains(logFilter.Method.ToUpperInvariant())); } if (!string.IsNullOrEmpty(logFilter.File)) { query = query.Where(e => e.File.ToUpperInvariant().Contains(logFilter.File.ToUpperInvariant())); } if (!string.IsNullOrEmpty(logFilter.LogName)) { query = query.Where(e => e.LogFile.ToUpperInvariant().Contains(logFilter.LogName.ToUpperInvariant())); } if (!string.IsNullOrEmpty(logFilter.Identity)) { query = query.Where(e => e.Identity.ToUpperInvariant().Contains(logFilter.Identity.ToUpperInvariant())); } if (!string.IsNullOrEmpty(logFilter.NDC)) { query = query.Where(e => e.NDC.ToUpperInvariant().Contains(logFilter.NDC.ToUpperInvariant())); } if (!string.IsNullOrEmpty(logFilter.Logger)) { query = query.Where(e => e.Logger.ToUpperInvariant().Contains(logFilter.Logger.ToUpperInvariant())); } // TODO: shouldn't we be showing 0 results if the filter matched 0 results? var c = query.Count(); log.Info("Received queries " + query.Count()); FilterIndicator.IsFiltered = query.Any() && (c != Entries.Count()); logFilter.IsFiltered = FilterIndicator.IsFiltered; log.Info("Log Filter status " + logFilter.IsFiltered); LogFilter.FilteredEntries = FilterIndicator.IsFiltered ? query.ToList() : Entries; listView1.ItemsSource = logFilter.IsFiltered ? LogFilter.FilteredEntries : Entries; tbFiltered.Text = FilterIndicator.IsFiltered ? c + "/" + Entries.Count() : Entries.Count().ToString(); }