/// <summary> /// /// </summary> /// <returns></returns> public static Tuple <List <LogInfo>, long> QueryLog(QueryLogInfoModel queryData) { var db = CreateDb(); if (queryData.PageNum <= 0) { queryData.PageNum = 1; } if (queryData.PageSize <= 0 || queryData.PageSize > 100) { queryData.PageSize = 20; } //获取表 MongoCollection <LogInfo> col = CreateMongoCollection <LogInfo>(queryData.TableName, db); List <IMongoQuery> queries = new List <IMongoQuery>(); if (!string.IsNullOrEmpty(queryData.APPID)) { queries.Add(Query <LogInfo> .Where(item => item.APPID == queryData.APPID.Trim())); } if (queryData.EndLogDate.HasValue) { queries.Add(Query <LogInfo> .LTE(item => item.LogDate, queryData.EndLogDate)); } if (queryData.StartLogDate.HasValue) { queries.Add(Query <LogInfo> .GTE(item => item.LogDate, queryData.StartLogDate)); } if (!string.IsNullOrEmpty(queryData.Exception)) { queries.Add(Query <LogInfo> .Where(item => item.Exception.Contains(queryData.Exception.Trim()))); } if (!string.IsNullOrEmpty(queryData.Level)) { queries.Add(Query <LogInfo> .EQ(item => item.Level, queryData.Level.Trim())); } if (!string.IsNullOrEmpty(queryData.Message)) { queries.Add(Query <LogInfo> .Where(item => item.Message.Contains(queryData.Message.Trim()))); } if (!string.IsNullOrEmpty(queryData.Title)) { queries.Add(Query <LogInfo> .Where(item => item.Title.Contains(queryData.Title.Trim()))); } if (!string.IsNullOrEmpty(queryData.Index)) { queries.Add(Query <LogInfo> .Where(item => item.Index.Contains(queryData.Index.Trim()))); } if (!string.IsNullOrEmpty(queryData.Group)) { queries.Add(Query <LogInfo> .Where(item => item.Group.Contains(queryData.Group.Trim()))); } if (!string.IsNullOrEmpty(queryData.Method)) { queries.Add(Query <LogInfo> .Where(item => item.Method.Contains(queryData.Method.Trim()))); } if (!string.IsNullOrEmpty(queryData.ServerIP)) { queries.Add(Query <LogInfo> .EQ(item => item.ServerIP, queryData.ServerIP.Trim())); } var finder = queries.Count == 0 ? col.FindAll() : col.Find(Query.And(queries)); var skip = (queryData.PageNum - 1) * queryData.PageSize; var res = finder.SetSkip(skip).SetSortOrder(SortBy <LogInfo> .Descending(item => item.LogDate)).SetLimit(queryData.PageSize); Debug.WriteLine(res.Query); Debug.WriteLine(res.Options); var result = res.ToList(); var total = queries.Count == 0 ? col.FindAll().Count() : (queryData.PageNum + (result.Count == queryData.PageSize ? 1 : 0)) * queryData.PageSize; return(new Tuple <List <LogInfo>, long>(result, total)); }
/// <summary> /// QueryLog /// </summary> /// <param name="queryData1"></param> /// <returns></returns> public ActionResult QueryLog(QueryLogInfoModel queryData1) { var data = LogBll.QueryLog(queryData1); return(Json(new { total = data.Item2, rows = data.Item1 })); }