.Net core Blazor自定义日志提供器实现实时日志查看器的原理
发布时间:2023-02-17 10:09:06 所属栏目:asp.Net 来源:互联网
导读:场景 我们经常远程连接服务器去查看日志,比较麻烦,如果直接访问项目的某个页面就能实时查看日志就比较奈斯了,花了1天研究了下.net core 日志的原理,结合blazor实现了基本效果。 实现原理 自定义日志提供器,将日志记录到内存中,滚动10W条删除。 提供bla
场景 我们经常远程连接服务器去查看日志,比较麻烦,如果直接访问项目的某个页面就能实时查看日志就比较奈斯了,花了1天研究了下.net core 日志的原理,结合blazor实现了基本效果。 实现原理 自定义日志提供器,将日志记录到内存中,滚动10W条删除。 提供blazor组件,实时从内存中读取后显示,搞了个简单的条件搜索。 为毛用内存存储?因为快,主要目的是实时监控,方便调试,只需要最近一段时间的数据,所以内存是最合适的。 由于数据是存储在全局静态变量中的(线程安全的),所以多个人同时打开页面查看日志其实看的是同一份数据。 这个库默认提供了与.net core默认的日志框架的继承,但你也可以用自己的方式把数据存储到那个静态变量中。 如何使用? 必须是asp.net 6.x的项目,至于是mvc webapi razorpages还是blazor无所谓,都可以简单配置支持blazor server,assembly模式按没考虑过。 我的项目是webapi,启用blazor server有影响吗?完全木有,asp.net core本就是基础web框架,同一个项目可以同时支持webapi mvc razorpage和blazor的。 1、启用blazor server(若你本来是,直接跳过) 若你不熟悉如何在现有项目集成blazor server,可以建个空的blazor server项目,然后按下面的步骤操作 在startup.cs或program.cs中 //注册服务 services.AddRazorPages(); services.AddServerSideBlazor(); //配置路由 app.UseEndpoints(endpoints => { endpoints.MapDefaultControllerRoute(); endpoints.MapBlazorHub(); endpoints.MapFallbackToPage("/_Host"); }); 然后将你新建的空的blazor server项目中的如下文件和目录拷贝过来 wwwroot:里面包含默认样式,若你完全决定自己搞样式,可以不拷贝 Pages:里面包含blazor server中基础的页面,其中_Host.cshtml(用来放blazor server根组件的)、_Layout.cshtml(_Host.cshtml依赖这个布局,我们还会在里面放公用的css js引用)文件必拷 Shared、公共组件,比如blazor的布局、菜单等组件 _Imports.razor、为所有blazor组件做全局命名空间导入的,注意它只为blazor组件服务,并不是global using,这个是给整个项目用的 App.razor ,blazor server的根组件,它被放在_Host.cshtml中的。在此页面顶部:<Router AppAssembly="@typeof(App).Assembly" AdditionalAssemblies="new Assembly[]{ typeof(BlazorServerLogger).Assembly}"> 注意修改命名空间,尤其注意_Layout.cshtml head部分<link href="ZLJ.FYJIOT.ApiHost.styles.css" rel="stylesheet" />前面的命名空间替换为你当前项目的命名空间,这个是当前项目中的组件的样式文件,自动生成的 2、安装咱的日志包:BXJG.BlazorServerLogger3、配置 在program.cs中 public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureLogging(b=>b.AddBlazorServerLogger()) 现在启动,导航到 /log-blazor 页面看效果。 自定义配置和样式 目前做的比较简单,默认滚动删除10W条、记录所有类别和级别的日志、以及组件的样式都是固定的,有兴趣可以自己改。 默认为你建好了页面 /log-blazor,这要求你在App.razor中配置AdditionalAssemblies="new Assembly[]{ typeof(BlazorServerLogger).Assembly}",如果你不想要这个页面,可以自己建页面,然后引入BlazorServerLogger组件,升值你也可以直接读取BlazorServerLoggerExt.MsgContainer中的当前日志信息,自己做显示。 (编辑:莱芜站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – OutOfMemoryException当发送大文件500MB使用Fil
- asp.net-mvc – ASP.NET MVC 3 Beta 1 Block访问Razor视图
- asp.net – IIS Web Garden中的Singleton对象
- 如何使用Fluent Nhibernate中的Automapping进行OR Mapping映
- asp.net-mvc-3 – MVC3剃须刀:是否可以渲染传统的ASCX?
- asp.net – Application_error函数间歇性捕获“文件不存在”
- WCF服务与ASP.NET Web Api
- ASP.NET core Web中使用appsettings.json配置文件的方法
- ASP.Net 分页控件源码
- asp.net-mvc – 我可以获取html.HiddenFor / Html.Hidden创
推荐文章
站长推荐
- asp.net字符串分割函数使用方法分享
- asp.net-mvc – 模型单元测试能否真正独立,如何[
- asp.net-mvc – 如何使用ASP.NET MVC ApiControl
- 如何通过Asp.net WebAPI中的异常过滤器传递内容?
- asp.net-mvc – ASP.NET MVC中的代码
- asp.net – 如何扩展aspnet成员身份验证表?
- asp.net – 访问.NET中的Web服务中的查询字符串(
- 如何排序. .NET中的resx(资源文件)
- asp.net – 我应该在哪里放置scriptmanager
- asp.net-mvc – asp.net MVC antiorgerytoken异常
热点阅读