log4net.SignalR - 日志即时发送客户端页面
时间:2022-04-23
本文章向大家介绍log4net.SignalR - 日志即时发送客户端页面,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在log4net的配置中,appender是最重要的部分,一般来说,每一种appender都表示一种日志的输出介质,如日志文件、EvengLog、数据库、控制台、邮件、ASP.NET页面等。log4net.SignalR是一个把Log4Net Event 从服务器发送到客户端页面的log4Net appender. 它通过SignalR异步信号库将事件实时通过流传送到客户端,并保持持久的连接。
log4net.SignalR 可以用来为你的网站建立一个日志查看器。它的使用非常简单:
1、在项目中添加log4net.SignalR.dll.这个可以通过Nuget工具
2、配置log4net.SignalR 作为Log4Net的appender
<log4net debug="true">
<appender name="SignalrAppender" type="log4net.SignalR.SignalrAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level - %message%newline" />
</layout>
</appender>
<root>
<appender-ref ref="SignalrAppender" />
</root>
</log4net>
3、用一个页面来侦听Log4Net的事件
添加一些jQuery 文件到的ASP.NET页面接收服务器上引发的事件。设置好SignalrAppender,把log4net的服务器上记录的所有事件都将被发送到浏览器JavaScript函数中执行。
<head>
<title>Log4Net.SignalR</title>
<link rel="stylesheet" type="text/css" href="@Url.Content("~/Resources/bootstrap.min.css")" />
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.7.2.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.signalR-0.5.2.min.js")"></script>
<script src="/signalr/hubs" type="text/javascript"></script>
<style>
body {
padding-top: 60px;
}
</style>
</head>
<table id="log-table" class="log">
<thead>
<tr>
<th>
Date
</th>
<th>
Level
</th>
<th style="width: 100%">
Details
</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<script type="text/javascript">
$(function () {
var log4net = $.connection.signalrAppenderHub;
log4net.onLoggedEvent = function (loggedEvent) {
var dateCell = $("<td>").css("white-space", "nowrap").text(loggedEvent.TimeStamp);
var levelCell = $("<td>").text(loggedEvent.Level);
var detailsCell = $("<td>").text(loggedEvent.Message);
var row = $("<tr>").append(dateCell, levelCell, detailsCell).addClass(loggedEvent.Level.toLowerCase());
$('#log-table tbody').append(row);
};
$.connection.hub.start(function () {
});
});
</script>
http://www.woohoo.uk.com/Blog/adding-real-time-statistics-to-surveywizz-using-signalr
- 第三周编程作业-Planar data classification with one hidden layerPlanar data classification with one hidden l
- 用R语言照葫芦画瓢撸了一个简易代理~
- 左手用R右手Python——CSS网页解析实战
- R语言数据抓取实战——RCurl+XML组合与XPath解析
- Python网络数据抓取实战——Xpath解析豆瓣书评
- 左手用R右手Python系列17——CSS表达式与网页解析
- 左手用R右手Python系列16——XPath与网页解析库
- 扒一扒rvest的前世今生!
- RCurl中这么多get函数,是不是一直傻傻分不清!!!
- 机器学习(二)深度学习实战-使用Kera预测人物年龄问题描述引入所需要模块加载数据集创建模型编译模型优化optimize1 使用卷积神经网络optimize2 增加神经网络的层数输出结果结果
- 异步加载的基本逻辑与浏览器抓包一般流程
- 左手用R右手Python系列之——表格数据抓取之道
- XML/HTML/JSON——数据抓取过程中不得不知的几个概念
- R语言网络数据抓取的又一个难题,终于攻破了!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- python第三十六课——2.迭代器对象
- python第三十七课——模块
- Linux系统MySQL数据库主从同步实战过程
- 最火的java8新特性:Lambda 表达式
- python第三十九课——面向对象(二)之设计类
- python第三十九课——面向对象(二)之初始化属性
- LVS服务DR模式安装布署过程
- python第四十课——构造函数
- python第四十一课——析构函数
- python第四十二课——__str__(self)函数
- python第四十三课——封装性
- Nginx+Tomcat多实例及负载均衡配置
- python第四十四课——继承性之单继承
- python第四十五课——继承性之多重继承
- Linux系统——keepalived高可用集群服务