public Task <List <LogModel> > GetAllLogs(LogFilterRequest filter)
 {
     return(logsDbSet
            .Where(CreateLogFilter(filter))
            .OrderBy(log => log.Date)
            .Skip((filter.PageNumber - 1) * filter.ItemsPerPage)
            .Take(filter.ItemsPerPage)
            .ToListAsync());
 }
        private Func <LogModel, string> CreateLogGroupping(LogFilterRequest filter)
        {
            if (filter.IsHostRequest)
            {
                return(log => log.HostName);
            }

            return(log => log.Route);
        }
        public async Task <IList <TopModel> > GetpTopByField(LogFilterRequest filter)
        {
            var top = filter.Top ?? 10;

            var grouppedLogs = await logsDbSet
                               .Where(CreateLogFilter(filter))
                               .ToListAsync();

            return(grouppedLogs
                   .GroupBy(CreateLogGroupping(filter))
                   .Select(GetTopModel)
                   .OrderByDescending(group => group.Count)
                   .Take(top)
                   .ToList());
        }
        public async Task GetTopOneLog()
        {
            var filter = new LogFilterRequest
            {
                Top = 1
            };

            var expectedResult = new LogModel()
            {
            };

            var result = await logReadRepository.GetAllLogs(filter);

            Assert.AreEqual(expectedResult, result);
        }
예제 #5
0
        public async Task <ServiceResponse <List <EwsLog> > > FindLogsByConditions(LogFilterRequest request)
        {
            try
            {
                var expresion      = LogExpression(request);
                var regionResource = await _logRepository.FindByConditions(expresion);

                return(new ServiceResponse <List <EwsLog> >(regionResource));
            }
            catch (Exception ex)
            {
                Log.Error("An Error Occured While fetching the requested Logs Resource. {@ex}", ex);
                return(new ServiceResponse <List <EwsLog> >($"An Error Occured While fetching the requested Logs Resource. {ex.Message}"));
            }
        }
예제 #6
0
        private Expression <Func <EwsLog, bool> > LogExpression(LogFilterRequest model)
        {
            var predicate = UtilityService.True <EwsLog>();

            //predicate = UtilityService.And(predicate, x => x.Level != EntityStatus.Disabled);

            if (model.Level != null)
            {
                predicate = UtilityService.And(predicate, x => x.Level.Contains(model.Level));
            }

            if (model.LogEvent != null)
            {
                predicate = UtilityService.And(predicate, x => x.LogEvent.Contains(model.LogEvent));
            }

            if (model.Message != null)
            {
                predicate = UtilityService.And(predicate, x => x.Message.Contains(model.Message));
            }

            if (model.MessageTemplate != null)
            {
                predicate = UtilityService.And(predicate, x => x.MessageTemplate.Contains(model.MessageTemplate));
            }

            if (model.StartDate != null)
            {
                predicate = UtilityService.And(predicate, x => x.TimeStamp >= model.StartDate);
            }

            if (model.EndDate != null)
            {
                predicate = UtilityService.And(predicate, x => x.TimeStamp <= model.EndDate);
            }

            if (model.Exception != null)
            {
                predicate = UtilityService.And(predicate, x => x.Exception.Contains(model.Exception));
            }

            if (model.LogEvent != null)
            {
                predicate = UtilityService.And(predicate, x => x.Exception.Contains(model.LogEvent));
            }

            return(predicate);
        }
예제 #7
0
        public async Task <ActionResult <LogReportResponse> > GetLogsWithFilter([FromBody] LogFilterRequest filterRequest)
        {
            //For performance reasons we don't use Automapper here.

            var logs = (await _logQueryService.GetLogs(
                            new LoggingDal.PaginationParams
            {
                Offset = filterRequest.PaginationParams.Offset,
                PageNumber = filterRequest.PaginationParams.PageNumber
            },
                            new LoggingDal.FilterParams
            {
                GroupKey = filterRequest.GroupKey,
                JobKey = filterRequest.JobKey,
                Description = filterRequest.Description,
                FromDate = filterRequest.FromDate,
                ToDate = filterRequest.ToDate,
                Severity = filterRequest.Severity,
                IsAscending = filterRequest.IsAscending
            }));


            return(Ok(
                       new LogReportResponse
            {
                TotalNumber = logs.totalNumber,
                Logs = logs.logs.Select(l => new Log
                {
                    Id = l.Id,
                    GroupKey = l.GroupKey,
                    JobKey = l.JobKey,
                    JobDescription = l.JobDescription,
                    Message = l.Msg,
                    Severity = l.Severity,
                    TimeStamp = l.Timestamp
                })
            }));
        }
 private Expression <Func <LogModel, bool> > CreateLogFilter(LogFilterRequest filter)
 {
     return(log => CreationFromDateFilter(filter.FromDate, log.Date) &&
            CreationToDateFilter(filter.ToDate, log.Date));
 }
 public Task <long> GetAllLogsCount(LogFilterRequest filter)
 {
     return(logsDbSet
            .Where(CreateLogFilter(filter))
            .LongCountAsync());
 }
 public async Task <IList <TopModel> > GetTopRecords([FromBody] LogFilterRequest filter)
 {
     return(await logReadRepository.GetpTopByField(filter));
 }
 public async Task <List <LogModel> > GetAllLogs([FromBody] LogFilterRequest filter)
 {
     return(await logReadRepository.GetAllLogs(filter));
 }
 public async Task <long> GetAllLogsCount([FromBody] LogFilterRequest filter)
 {
     return(await logReadRepository.GetAllLogsCount(filter));
 }