文章出處

在大叔lind框架里有日志組件logger,而在日志實現方式上有file,mongodb,sql,json等方式,對分布式日志處理上大叔推薦使用mongodb進行存儲,除了它的高效寫入,靈活的結構外,還有對復雜條件的支持,你可以從百萬數據中查詢到你需要的內容,這點是關系數據庫不能實現的,你無法想法使用like這種語句是百萬數據中全表掃描...

大叔日志管理UI

對多個檢索條件的支持

  1. 條件創建者
  2. 初者化空條件
  3. 條件拼接

NameValueCollection nv = new NameValueCollection();

            var builder = Builders<GlobalLogger>.Filter;
            var filter = builder.Empty;
            if (!string.IsNullOrWhiteSpace(level) && level != "All")
            {
                filter = builder.Eq("level", level);
                nv.Add("level", level);
            }
            if (startTime.HasValue)
            {
                filter = filter & builder.Gte("DataCreateDateTime", startTime.Value);
                nv.Add("startTime", startTime.Value.ToString());
            }
            if (endTime.HasValue)
            {
                filter = filter & builder.Lte("DataCreateDateTime", endTime.Value);
                nv.Add("endTime", endTime.Value.ToString());
            }
            if (!string.IsNullOrWhiteSpace(keyword))
            {
                filter = filter & builder.Regex("Message", new BsonRegularExpression(new Regex(keyword)));
                nv.Add("keyword", keyword);
            }
            int pageSize = 10;
            nv.Add("pageSize", pageSize.ToString());
            int skip = (int)Math.Ceiling((double)((page - 1) * pageSize));

            var table = Lind.DDD.MongoDbClient.MongoManager<GlobalLogger>.Instance
                            .Find(filter)
                            .SortBy(i => i.DataCreateDateTime);
            ViewBag.total = table.Count();
            ViewBag.nv = nv;

            var model = table.Skip(skip)
                             .Limit(pageSize)
                             .ToList();

            return View(model);

然后頁面上直接放表表格即可,建議通過bootstrap進行布局,這樣有移動設備上也可以使用!

感謝各位的閱讀!


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜

    大師兄 發表在 痞客邦 留言(0) 人氣()


    留言列表 留言列表

    發表留言