Paragraph GetParagraphForLog(LogEntity log) { var line = new Run($"[{log.Time}] [{log.App}] [{log.Logger}] [{log.Thread}] {log.Content}"); switch (log.Level) { case "FATAL": line.Foreground = new SolidColorBrush(Colors.Red); line.Background = new SolidColorBrush(Colors.Black); break; case "ERROR": line.Foreground = new SolidColorBrush(Colors.Red); break; case "WARN": line.Foreground = new SolidColorBrush(Color.FromRgb(0xff, 0x5c, 0x00)); break; case "INFO": line.Foreground = new SolidColorBrush(Colors.DodgerBlue); break; case "DEBUG": line.Foreground = new SolidColorBrush(Colors.Gray); break; } if (!DateTime.TryParse(log.Time.Replace(",", "."), out var logAt)) { logAt = DateTime.Now; } return(new Paragraph(line) { Tag = logAt }); }
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); }