public async Task <PagedList <ApiLogModel> > GetApiLogsFromFile(ApiLogFiltersParams filters) { var logsFilePath = BuildLogFilesPath(filters.Date); if (!filesManager.FileExists(logsFilePath)) { return(new List <ApiLogModel>().ToPagedList <ApiLogModel>(filters.PageNumber, filters.PageSize)); } string[] logsJson = await filesManager.ReadFileLines(logsFilePath); ReplaceKeyWordsInJson(ref logsJson); var logs = ConvertLogsFileIntoList(logsJson); logs = FilterLogs(filters, logs); return(logs.ToPagedList <ApiLogModel>(filters.PageNumber, filters.PageSize)); }
private static IEnumerable <ApiLogModel> FilterLogs(ApiLogFiltersParams filterses, IEnumerable <ApiLogModel> logs) { if (!string.IsNullOrEmpty(filterses.Message)) { logs = logs.Where(l => l.Message != null && l.Message.ToLower().Contains(filterses.Message.ToLower())); } if (!string.IsNullOrEmpty(filterses.Level)) { logs = logs.Where(l => l.Level != null && l.Level.ToUpper().Contains(filterses.Level.ToUpper())); } if (!string.IsNullOrEmpty(filterses.RequestMethod)) { logs = logs.Where(l => l.RequestMethod != null && l.RequestMethod.ToLower().Contains(filterses.RequestMethod.ToLower())); } if (!string.IsNullOrEmpty(filterses.RequestPath)) { logs = logs.Where(l => l.RequestPath != null && l.RequestPath.ToLower().Contains(filterses.RequestPath.ToLower())); } if (filterses.StatusCode != null) { logs = logs.Where(l => l.StatusCode == filterses.StatusCode); } if (filterses.MinTime != null) { logs = logs.Where(l => l.Date >= filterses.MinTime); } if (filterses.MaxTime != null) { logs = logs.Where(l => l.Date <= filterses.MaxTime); } logs = ApiLogSortTypeSmartEnum.FromValue((int)filterses.SortType).Sort(logs); return(logs); }