Пример #1
0
        public (List <Log>, long) GetLogData(LogLookQuery query, int pageIndex, int pageSize)
        {
            var repo   = GetRepository(query);
            var result = repo.Pagination(pageIndex, pageSize, x => x.Id, false, GetExpression(query));
            var list   = result.ToList();

            foreach (var i in list)
            {
                i.PrepareLogForRead();
            }
            return(list, result.TotalItemCount);
        }
Пример #2
0
        public async Task <IActionResult> Look(LogLookQuery query)
        {
            var client = (await configService.GetAllClients()).Where(x => x.Name == query.ClientName).FirstOrDefault();

            if (client == null)
            {
                return(Json(new { Succes = false, Message = "未找到此客户端配置" }));
            }
            var p = query.GetIndexName();

            (var l, var count) = logService.GetLogData(query, query.PageIndex, query.PageSize);
            return(Json(new { Succes = true, Items = l, Total = count }));
        }
Пример #3
0
        //private Expression<Func<Log, bool>> GetExpression(LogLookQuery lookQuery)
        //{
        //    Expression<Func<Log, bool>> expression = null;
        //    if (!string.IsNullOrEmpty(lookQuery.Key))
        //    {
        //        if (!string.IsNullOrEmpty(lookQuery.Key.Trim()) && lookQuery.Key.Trim().Contains(" "))
        //        {
        //            var keys = lookQuery.Key.Trim().Split(' ');
        //            var i = 0;
        //            foreach (var k in keys)
        //            {
        //                if (i++ == 0)
        //                    expression = x => x.Message.Contains(k) || x.StackTrace.Contains(k) || x.AddtionsString.Contains(k);
        //                else
        //                    expression = expression.And(x => x.Message.Contains(k) || x.StackTrace.Contains(k) || x.AddtionsString.Contains(k));
        //            }
        //        }
        //        else
        //        {
        //            expression = x => x.Message.Contains(lookQuery.Key) || x.StackTrace.Contains(lookQuery.Key) || x.AddtionsString.Contains(lookQuery.Key);
        //        }
        //    }
        //    if (lookQuery.HappenTimeRegion.Length == 2)
        //    {
        //        var d0 = lookQuery.HappenTimeRegion[0];
        //        var d1 = lookQuery.HappenTimeRegion[1];
        //        if (d0.Hour > 0 || d0.Minute > 0 || d0.Second > 0)
        //        {
        //            d0 = new DateTime(lookQuery.HappenTime.Year, lookQuery.HappenTime.Month, lookQuery.HappenTime.Day, d0.Hour, d0.Minute, d0.Second);
        //            Expression<Func<Log, bool>> e5 = x => x.HappenTime >= d0;
        //            if (expression == null)
        //                expression = e5;
        //            else
        //                expression = expression.And(e5);
        //        }
        //        if (d1.Hour < 23 || d1.Minute < 59 || d0.Second < 59)
        //        {
        //            d1 = new DateTime(lookQuery.HappenTime.Year, lookQuery.HappenTime.Month, lookQuery.HappenTime.Day, d1.Hour, d1.Minute, d1.Second);
        //            d1 = d1.AddSeconds(1);
        //            Expression<Func<Log, bool>> e6 = x => x.HappenTime < d1;
        //            if (expression == null)
        //                expression = e6;
        //            else
        //                expression = expression.And(e6);
        //        }
        //    }
        //    return expression;
        //}

        public async Task <(List <Log>, long)> GetLogData(LogLookQuery query, int pageIndex, int pageSize)
        {
            var repo = GetRepository(query);

            (var result, var total) = await repo.PageListAsync(GetQueryContainer(query), x => x.CreateTime, pageIndex, pageSize, true);

            var list = result.ToList();

            foreach (var i in list)
            {
                i.PrepareLogForRead();
            }
            return(list, total);
        }
Пример #4
0
        private Expression <Func <Log, bool> > GetExpression(LogLookQuery lookQuery)
        {
            Expression <Func <Log, bool> > expression = null;

            if (!string.IsNullOrEmpty(lookQuery.Key))
            {
                if (!string.IsNullOrEmpty(lookQuery.Key.Trim()) && lookQuery.Key.Trim().Contains(" "))
                {
                    var keys = lookQuery.Key.Trim().Split(' ');
                    var i    = 0;
                    foreach (var k in keys)
                    {
                        if (i++ == 0)
                        {
                            expression = x => x.Message.Contains(k) || x.StackTrace.Contains(k) || x.AddtionsString.Contains(k);
                        }
                        else
                        {
                            expression = expression.And(x => x.Message.Contains(k) || x.StackTrace.Contains(k) || x.AddtionsString.Contains(k));
                        }
                    }
                }
                else
                {
                    expression = x => x.Message.Contains(lookQuery.Key) || x.StackTrace.Contains(lookQuery.Key) || x.AddtionsString.Contains(lookQuery.Key);
                }
            }
            if (!string.IsNullOrEmpty(lookQuery.Level))
            {
                LogLeveEnum en = (LogLeveEnum)Convert.ToInt32(lookQuery.Level);
                Expression <Func <Log, bool> > e1 = x => x.Level == en;
                if (expression == null)
                {
                    expression = e1;
                }
                else
                {
                    expression = expression.And(e1);
                }
            }
            if (lookQuery.Level == "10")//接口日志才对执行结果和时间进行查询
            {
                if (!string.IsNullOrEmpty(lookQuery.Success))
                {
                    bool bl = lookQuery.Success == "1";
                    Expression <Func <Log, bool> > e2 = x => x.Success == bl;
                    if (expression == null)
                    {
                        expression = e2;
                    }
                    else
                    {
                        expression = expression.And(e2);
                    }
                }
                if (!string.IsNullOrEmpty(lookQuery.MSec) && lookQuery.MSec.Contains("-"))
                {
                    var msa = lookQuery.MSec.Split('-');
                    var min = msa[0].ToInt();
                    var max = msa[1].ToInt();
                    if (min > 0)
                    {
                        Expression <Func <Log, bool> > e3 = x => x.TotalMillionSeconds >= min;
                        if (expression == null)
                        {
                            expression = e3;
                        }
                        else
                        {
                            expression = expression.And(e3);
                        }
                    }
                    if (max > 0)
                    {
                        Expression <Func <Log, bool> > e4 = x => x.TotalMillionSeconds < max;
                        if (expression == null)
                        {
                            expression = e4;
                        }
                        else
                        {
                            expression = expression.And(e4);
                        }
                    }
                }
            }
            if (lookQuery.HappenTimeRegion.Length == 2)
            {
                var d0 = lookQuery.HappenTimeRegion[0];
                var d1 = lookQuery.HappenTimeRegion[1];
                if (d0.Hour > 0 || d0.Minute > 0 || d0.Second > 0)
                {
                    d0 = new DateTime(lookQuery.HappenTime.Year, lookQuery.HappenTime.Month, lookQuery.HappenTime.Day, d0.Hour, d0.Minute, d0.Second);
                    Expression <Func <Log, bool> > e5 = x => x.HappenTime >= d0;
                    if (expression == null)
                    {
                        expression = e5;
                    }
                    else
                    {
                        expression = expression.And(e5);
                    }
                }
                if (d1.Hour < 23 || d1.Minute < 59 || d0.Second < 59)
                {
                    d1 = new DateTime(lookQuery.HappenTime.Year, lookQuery.HappenTime.Month, lookQuery.HappenTime.Day, d1.Hour, d1.Minute, d1.Second);
                    d1 = d1.AddSeconds(1);
                    Expression <Func <Log, bool> > e6 = x => x.HappenTime < d1;
                    if (expression == null)
                    {
                        expression = e6;
                    }
                    else
                    {
                        expression = expression.And(e6);
                    }
                }
            }
            return(expression);
        }
Пример #5
0
        private Func <QueryContainerDescriptor <Log>, QueryContainer> GetQueryContainer(LogLookQuery lookQuery)
        {
            Expression <Func <QueryContainerDescriptor <Log>, QueryContainer> > func = null;

            if (!lookQuery.Key.NullOrEmpty() && !lookQuery.Key.Trim().NullOrEmpty())
            {
                var realKey = lookQuery.Key.Trim();
                if (lookQuery.QueryMode == 1)
                {
                    if (realKey.Contains(' '))
                    {
                        var keys = lookQuery.Key.Trim().Split(' ');
                        var i    = 0;
                        foreach (var k in keys)
                        {
                            var rk = $"{k}";
                            if (i++ == 0)
                            {
                                func = x => x.Wildcard(y => y.AddtionsString, rk, null, null, null);
                            }
                            else
                            {
                                func = func.And(x => x.Wildcard(y => y.AddtionsString, rk, null, null, null));
                            }
                        }
                    }
                    else
                    {
                        func = x => x.Wildcard(y => y.AddtionsString, $"{realKey}", null, null, null);
                    }
                }
                else
                {
                    //if (realKey.Contains(' '))
                    //{
                    var keys = lookQuery.Key.Trim().Split(' ');
                    var fs   = keys.Select(x =>
                    {
                        Func <QueryContainerDescriptor <Log>, QueryContainer> f = y => y.Match(z => z.Field(w => w.AddtionsString).Query(x));
                        return(f);
                    });
                    func = x => x.Bool(y => y.Must(fs));
                    //}
                    //else
                    //{
                    //    func = x => x.Match(y => y.Field(z => z.AddtionsString).Query(realKey));
                    //}
                }
            }
            if (lookQuery.HappenTimeRegion.Length == 2)
            {
                var d0 = lookQuery.HappenTimeRegion[0];
                var d1 = lookQuery.HappenTimeRegion[1];
                if (d0.Hour > 0 || d0.Minute > 0 || d0.Second > 0 || d1.Hour < 23 || d1.Minute < 59 || d1.Second < 59)
                {
                    d0   = new DateTime(lookQuery.HappenTime.Year, lookQuery.HappenTime.Month, lookQuery.HappenTime.Day, d0.Hour, d0.Minute, d0.Second);
                    d1   = new DateTime(lookQuery.HappenTime.Year, lookQuery.HappenTime.Month, lookQuery.HappenTime.Day, d1.Hour, d1.Minute, d1.Second);
                    func = func.And(x => x.DateRange(y => y.Field(z => z.HappenTime).LessThan(d1.ToUniversalTime()).GreaterThan(d0.ToUniversalTime())));
                }
            }
            return(func?.Compile());
        }
 public async Task <(List <Log>, long)> GetLogData(LogLookQuery query, int pageIndex, int pageSize)
 {
     return(await logRepository.GetLogData(query, pageIndex, pageSize));
 }
Пример #7
0
 public (List <Log>, long) GetLogData(LogLookQuery query, int pageIndex, int pageSize)
 {
     return(logRepository.GetLogData(query, pageIndex, pageSize));
 }