asp.net API 实时日志查看功能
2012-11-27 14:55
459 查看
< ![CDATA[有时候些mvc api .当 参数传进来后。进行的那些操作。一般写log。比较麻烦。不方便
现在介绍下,实时显示 log的一个方法
首先 ,需要一个object SignalR 自行 去git下载。
vs的packing搜不到。
这个其实就是 websocket
思路就是 :
1--路由进入配置。
2.新建一个虚拟类 ,相当于枢纽,广播日志到客户端
3.新建一个允许任何类继承的 signalrbase
4.记录当时的时间,访问的方法,等。实现类。
5. 记录日志的方法方法,字符串拼加
利用signalr 广播。实时把api访问的log广播给客户端。
SignalR 本来就是一个websocket 封装
然后,这些日志 将在 页面上输出
所以最后新建一个HTML,连接我们刚才建的广播中心。接收日志
看下图:
左边的我请求了个api 。地址。右边我新建的html 实时的接收广播 打印出来。
不擅长写blog。。将就看看吧。
可以参考一下文章
/article/4926772.html (在 Asp.NET MVC 中使用 SignalR 实现推送功能)
]]>
现在介绍下,实时显示 log的一个方法
首先 ,需要一个object SignalR 自行 去git下载。
vs的packing搜不到。
这个其实就是 websocket
思路就是 :
1--路由进入配置。
public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); // config.Services.Replace(typeof(ITraceWriter), new DynamicTrace()); } }
2.新建一个虚拟类 ,相当于枢纽,广播日志到客户端
[HubName("trace")] public class TraceHub : Hub {}
3.新建一个允许任何类继承的 signalrbase
public abstract class SignalRBase<T> where T : IHub { private Lazy<IHubContext> hub = new Lazy<IHubContext>(() => GlobalHost.ConnectionManager.GetHubContext<T>()); protected IHubContext Hub { get { return hub.Value; } } }
4.记录当时的时间,访问的方法,等。实现类。
public class DynamicTrace : SignalRBase<TraceHub>, ITraceWriter { public void Trace(HttpRequestMessage request, string category, TraceLevel level, Action<TraceRecord> traceAction) { if (level != TraceLevel.Off) { TraceRecord record = new TraceRecord(request, category, level); traceAction(record); Log(record); } } private void Log(TraceRecord record) { var message = new StringBuilder(); message.AppendMessage(record.Level.ToString().ToUpper()); message.AppendMessage(DateTime.Now.ToString()); if (record.Request != null) message.AppendMessage(record.Request.Method.ToString(), notEmpty).AppendMessage(record.Request.RequestUri.ToString(), notEmpty); message.AppendMessage(record.Category, notEmpty).AppendMessage(record.Operator, notEmpty) .AppendMessage(record.Operation).AppendMessage(record.Message, notEmpty); if (record.Exception != null) message.AppendMessage(record.Exception.GetBaseException().Message, notEmpty); Hub.Clients.All.logMessage(message.ToString()); } Func<string, bool> notEmpty = (text) => !string.IsNullOrWhiteSpace(text); }
5. 记录日志的方法方法,字符串拼加
public static StringBuilder AppendMessage(this StringBuilder sb, string text, Func<string, bool> predicate = null) { if (predicate != null) { if (predicate(text)) { sb.Append(" "); sb.Append(text); } } else { sb.Append(" "); sb.Append(text); } return sb; }
利用signalr 广播。实时把api访问的log广播给客户端。
SignalR 本来就是一个websocket 封装
然后,这些日志 将在 页面上输出
所以最后新建一个HTML,连接我们刚才建的广播中心。接收日志
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> </head> <body> <ul id="messages"></ul> <script type="text/javascript" src="Scripts/jquery-1.7.1.js"></script> <script type="text/javascript" src="Scripts/jquery.signalR-1.0.0-alpha2.js"></script> <script type="text/javascript" src="signalr/hubs"></script> <script type="text/javascript"> $(function () { hub = $.connection.trace; hub.client.logMessage = function (data) { $('#messages').prepend('<li>' + data + '</li>'); }; $.connection.hub.start(); }); </script> </body>
看下图:
左边的我请求了个api 。地址。右边我新建的html 实时的接收广播 打印出来。
不擅长写blog。。将就看看吧。
可以参考一下文章
/article/4926772.html (在 Asp.NET MVC 中使用 SignalR 实现推送功能)
]]>
相关文章推荐
- 在ASP.NET中如何使用ASP.NET AJAX实时搜索功能控件--RealTimeSearchMonitor
- [Asp.net]SignalR实现实时日志监控
- asp.net core 控制台查看日志
- ASP.NET/MVC 配置log4net启用写错误日志功能
- ASP.NET/MVC 配置log4net启用写错误日志功能
- C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志
- ASP.NET 配置log4net启用写错误日志功能
- ASP.NET 2.0实现类似QQ邮箱中‘HTML方式查看’功能查看Office文件
- 详解ASP.NET Core应用中如何记录和查看日志
- ASP.NET/MVC 配置log4net启用写错误日志功能
- Asp.Net Core中利用Seq组件展示结构化日志功能
- ASP.NET调用Dephi多线程日志功能
- 在ASP.NET中如何使用ASP.NET AJAX实时搜索功能控件--RealTimeSearchMonitor
- [Asp.net]SignalR实现实时日志监控
- asp.net实现word文档在线查看功能 (三种方法)
- ASP.NET Core应用中如何记录和查看日志
- ASP.NET Core应用中如何记录和查看日志
- ASP.NET 添加日志记录功能
- 在asp.net中 利用雅虎天气API做天气预报功能
- YbSoftwareFactory 代码生成插件【十】:ASP.NET WebApi MVC下审计、缓存和导出功能的实现