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