예제 #1
0
        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));
        }
예제 #2
0
        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);
        }