public LogViewModel() { AllAppInfo = new AppInfo() { IsChecked = true, AppName = All }; AllAppInfo.PropertyChanged += AllAppInfo_PropertyChanged; ApplicationNames = new ObservableCollection <AppInfo> { AllAppInfo }; AllThreadInfo = new ThreadInfo() { IsChecked = true, ThreadId = All, AppName = All }; AllThreadInfo.PropertyChanged += AllThreadInfo_PropertyChanged; ThreadIds = new ObservableCollection <ThreadInfo> { AllThreadInfo }; Loggers = new ObservableCollection <LogNameInfo>(); LoggerLevels = new ObservableCollection <string> { All, "FATAL", "ERROR", "WARN", "INFO", "DEBUG" }; AllLogName = new LogNameInfo() { IsChecked = true, Name = All, AppName = All }; AllLogName.PropertyChanged += AllLogName_PropertyChanged; Loggers.Add(AllLogName); CurrentApp = AllAppInfo; CurrentLogger = AllLogName; CurrentThread = AllThreadInfo; CurrentLevel = All; }
void ShowLog(LogEntity log) { if (log == null) { return; } _allLogs.Add(log); if (_logViewModel.ApplicationNames.All(app => app.AppName != log.App)) { _logViewModel.ApplicationNames.Add(new AppInfo { IsChecked = _logViewModel.AllAppInfo.IsChecked, AppName = log.App }); } if (_logViewModel.ThreadIds.All(t => t.ThreadId != log.Thread)) { var needAdd = true; var newThread = new ThreadInfo() { AppName = log.App, IsChecked = _logViewModel.AllThreadInfo.IsChecked, ThreadId = log.Thread }; for (var i = 0; i < _logViewModel.ThreadIds.Count; i++) { if (_logViewModel.ThreadIds[i].AppName != newThread.AppName) { continue; } _logViewModel.ThreadIds.Insert(i + 1, newThread); needAdd = false; break; } if (needAdd) { _logViewModel.ThreadIds.Add(newThread); } } if (_logViewModel.Loggers.All(n => n.Name != log.Logger)) { var newLogger = new LogNameInfo() { AppName = log.App, IsChecked = _logViewModel.AllLogName.IsChecked, Name = log.Logger }; var needAdd = true; for (var i = 0; i < _logViewModel.Loggers.Count; i++) { if (_logViewModel.Loggers[i].AppName != newLogger.AppName) { continue; } _logViewModel.Loggers.Insert(i + 1, newLogger); needAdd = false; break; } if (needAdd) { _logViewModel.Loggers.Add(newLogger); } } _logViewModel.Total++; switch (log.Level) { case "FATAL": _logViewModel.Fatal++; break; case "ERROR": _logViewModel.Error++; break; case "WARN": _logViewModel.Warn++; break; case "INFO": _logViewModel.Info++; break; case "DEBUG": _logViewModel.Debug++; break; } if (!CanShowThisLog(log)) { return; } if (_lastLogId != 0 && log.LogId > _lastLogId) { return; } ShowLogItem(log); }