SignalR实现页面实时监控

 

1.页面截图

2.数据库截图

 

 

3.前端代码

 

@{
    ViewBag.Title = "ToDB";
}

"margin:0 auto;width:auto;text-align:center">

日志导入数据库

"width: 810px; margin: 0 auto; ">
"border: 1px solid #e8e8e8; width: 800px; height: 400px; margin: 0 auto; color: #808080; font-size: 13px; padding:5px; overflow:auto;"> 监控信息如下:
    "discussion">
"msg_end" style="height:0px; overflow:hidden;">

"border: 1px solid #e8e8e8; width: 800px; height: 55px; margin: 0 auto; color: #808080; font-size: 13px; padding: 5px; overflow: auto;"> 本页面用到的技术:SignalR。
SignalR技术功能:数据实时同步到浏览器,不需要刷新。
SignalR技术说明:后台动态执行javascript脚本,前台监控后台执行的结果并将结果显示到浏览器上,可以用于网页版的聊天功能。
View Code

 

 

4.后端代码

/// 
        /// 日志导入到数据库
        /// 
        public void ToDB()
        {
            var loganalysis = new LogAnalysisBll();
            var logbll = new LogsBll();
            var json = new { filename = "", logscount = 0, status = 0 };
            //获取所有日志名称
            var list = loganalysis.GetFields(logPath);
            if (list != null && list.Count > 0)
            {
                //时间倒序排列
                list = list.OrderByDescending(x => x.AsDatetime()).ToList();
            }

            foreach (var item in list)
            {
                var month = item.AsDatetime().Month.ToString();
                var day = item.AsDatetime().Day.ToString();
                month = month.Length == 1 ? "0" + month : month;
                day = day.Length == 1 ? "0" + day : day;

                LogInfoModel fileModel = new LogInfoModel() { LogName = item };
                var fileSave = logbll.InsertFile(fileModel);  //插入日志名称到数据库

                //根据日志路径分析日志,获取列表
                var logslist = loganalysis.GetLog(string.Format("{4}{0}\\{1}\\{2}\\{3}.log", item.AsDatetime().Year, month, day, item.AsDatetime().ToString("yyyyMMdd"), logPath));
                if (fileSave > 0)  //如果数据库不存在此日志文件,则添加日志文件和问件包含的日志
                {
                    foreach (var log in logslist)
                    {
                        var logModel = log;
                        logModel.FileId = fileSave;
                        logbll.InsertLog(logModel);
                    }
                    json = new { filename = item, logscount = logslist.Count, status = 1 };
                    Clients.All.addNewMessageToPage(json);
                }
                else  //如果数据库已存在此文件,则检索此文件中所有的日志,将还未添加到数据库中的日志添加到数据库
                {
                    var model = logbll.GetLastLog(item); //获取数据库当前文件的最后一个日志
                    var lastTime = model.LogCreateTime.AsString(19).AsDatetime();
                    var loglist = logslist.Where(x => x.LogCreateTime.AsString(19).AsDatetime() > lastTime).ToList();
                    var a = loglist.Count;
                    foreach (var log in loglist)
                    {
                        var logModel = log;
                        logModel.FileId = model.FileId;
                        logbll.InsertLog(logModel);
                    }
                    json = new { filename = item, logscount = loglist.Count, status = 1 };
                    Clients.All.addNewMessageToPage(json);
                }
            }
            json = new { filename = "", logscount = 0, status = 0 };
            Clients.All.addNewMessageToPage(json);
        }
View Code

 

对于SignalR使用不成功的可以问我,我不是很了解但是使用成功了,遇到部分问题也解决了,QQ:905679027

 

转载于:https://www.cnblogs.com/hpp3501/p/5997519.html

你可能感兴趣的:(SignalR实现页面实时监控)