public static List<SourcedAdoNetLog> FilterLogs(this List<SourcedAdoNetLog> unfilteredLogs , LogViewerParamModel filterModel ) { var filteredLogs = filterModel.LogLevel != null ? unfilteredLogs.Where(x => ( x.Level != null && x.Level.ToLowerInvariant() == filterModel.LogLevel.ToLowerInvariant())) : unfilteredLogs; filteredLogs = filterModel.Thread != null ? filteredLogs.Where(x => ( x.Thread != null && x.Thread.ToLowerInvariant() == filterModel.Thread.ToLowerInvariant())) : filteredLogs; filteredLogs = filterModel.LoggerType != null ? filteredLogs.Where(x => (x.Logger != null && x.Logger.ToLowerInvariant() == filterModel.LoggerType.ToLowerInvariant())) : filteredLogs; if(filterModel.StartDate.HasValue && filterModel.EndDate.HasValue) filteredLogs = filteredLogs.Where(x => x.Date >= filterModel.StartDate && x.Date <= filterModel.EndDate); // EndDate.AddSeconds(1) ?? else { filteredLogs = filterModel.StartDate.HasValue ? filteredLogs.Where(x => x.Date >= filterModel.StartDate) : filteredLogs; filteredLogs = filterModel.EndDate.HasValue ? filteredLogs.Where(x => x.Date <= filterModel.EndDate) : filteredLogs; // EndDate.AddSeconds(1) ?? } return filteredLogs.ToList(); }
public ActionResult Index(LogViewerParamModel model) { var selectedConnections = new List<string>(); if (model.Lumberjack != null && (model.Lumberjack.ToLowerInvariant() == "on" || model.Lumberjack.ToLowerInvariant() == "true")) selectedConnections.Add("Lumberjack"); if (model.JustBlogging != null && (model.JustBlogging.ToLowerInvariant() == "on" || model.JustBlogging.ToLowerInvariant() == "true")) selectedConnections.Add("JustBlogging"); var connectionList = new List<string>(); connectionList.AddRange(MvcApplication.ConnectionList.Select(pair => pair.Key)); connectionList.Add("LogsGoHereEmail"); IEnumerable<String> distinctLoggers = new List<String>(); var allLogs = new List<SourcedAdoNetLog>(); foreach (var conn in selectedConnections) { var connMap = MvcApplication.ConnectionList.FirstOrDefault(x => x.Key == conn).Value; var tableName = "Log"; var logViewerManager = LogViewerManagerFactory.CreateManager(null, null, connMap); { allLogs.AddRange(logViewerManager.FilteredLogs(tableName, conn, model.LogLevel, model.StartDate, model.EndDate, model.LoggerType, model.Thread)); distinctLoggers = distinctLoggers.Concat(LogViewerManager.GetDistinctLoggersList(tableName)); } } if (model.LogsGoHereEmail != null && (model.LogsGoHereEmail.ToLowerInvariant() == "on" || model.LogsGoHereEmail.ToLowerInvariant() == "true")) { var emailLogs = EmailHelper.ImapGetLogEmails(50); allLogs.AddRange(emailLogs.FilterLogs(model)); distinctLoggers = distinctLoggers.Concat(emailLogs.Select(x => x.Logger).Distinct()); } ViewBag.LogLevel = new SelectList(LogViewerManager.GetLogLevelList()); ViewBag.LoggerType = new SelectList(distinctLoggers.Where(x => x != null).Distinct()); return View( new LogViewerViewModel { Logs = allLogs.OrderByDescending(x => x.Date), ConnectionList = connectionList }); }