public void UpdateMaxNumberOfLogs(int maxNumberOfLogs) { if (MaxNumberOfLogsPerLevel <= maxNumberOfLogs) { MaxNumberOfLogsPerLevel = maxNumberOfLogs; return; } MaxNumberOfLogsPerLevel = maxNumberOfLogs; List <LogViewModel> logsToRemove = new List <LogViewModel>(); List <LogViewModel> logsToRemoveTrace = LogsTrace.Take(LogsTrace.Count - maxNumberOfLogs).ToList(); logsToRemoveTrace.ForEach((m) => { LogsTrace.Remove(m); }); List <LogViewModel> logsToRemoveDebug = LogsDebug.Take(LogsDebug.Count - maxNumberOfLogs).ToList(); logsToRemoveDebug.ForEach((m) => { LogsDebug.Remove(m); }); List <LogViewModel> logsToRemoveInfo = LogsInfo.Take(LogsInfo.Count - maxNumberOfLogs).ToList(); logsToRemoveInfo.ForEach((m) => { LogsInfo.Remove(m); }); List <LogViewModel> logsToRemoveWarn = LogsWarn.Take(LogsWarn.Count - maxNumberOfLogs).ToList(); logsToRemoveWarn.ForEach((m) => { LogsWarn.Remove(m); }); List <LogViewModel> logsToRemoveError = LogsError.Take(LogsError.Count - maxNumberOfLogs).ToList(); logsToRemoveError.ForEach((m) => { LogsError.Remove(m); }); List <LogViewModel> logsToRemoveFatal = LogsFatal.Take(LogsFatal.Count - maxNumberOfLogs).ToList(); logsToRemoveFatal.ForEach((m) => { LogsFatal.Remove(m); }); logsToRemove.AddRange(logsToRemoveTrace); logsToRemove.AddRange(logsToRemoveDebug); logsToRemove.AddRange(logsToRemoveInfo); logsToRemove.AddRange(logsToRemoveWarn); logsToRemove.AddRange(logsToRemoveError); logsToRemove.AddRange(logsToRemoveFatal); logsToRemove.ForEach((m) => { if (IsActive && LoggingLevel.IsLogLevelAboveMin(m.Level, SelectedMinLogLevel) && IsNamespaceActive(m) && IsSearchCriteriaMatch(m)) { Logs.Remove(m); } }); }