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); }
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 })); }
//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); }
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); }
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)); }
public (List <Log>, long) GetLogData(LogLookQuery query, int pageIndex, int pageSize) { return(logRepository.GetLogData(query, pageIndex, pageSize)); }