Blazor基础之日志
分类: Blazor入门 ◆ 标签: #Asp.Net core基础 #.Net #Web #Web Client #Blazor ◆ 发布于: 2023-05-25 21:32:12

今天我们继续来学习Blazor的基础,本章讲述日志。
日志这个部分我们仍然得区分部署模型,基于WebAssembly部署和基于Server的部署在日志的配置上是有区别的,在日志的使用上有区别也有共性。如下表
WebAssebmly部署 | Blazor Server部署 | |
日志配置 | 和ASP.net Core有区别,需要单独讨论 | 和ASP.Net Core基本没区别 |
SignalR .Net客户端使用 | 和ASP.net Core有区别,需要单独讨论 | 和ASP.net Core基本没区别 |
Razor组件中使用 | WebAssembly和Blazor Server没有区别 | WebAssembly和Blazor Server没有区别 |
关于Blazor Server的日志配置和使用,您可以参考文档: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging/?view=aspnetcore-5.0
Blazor WebAssembly日志配置
基于WebAssembly的日志配置,我们目前有两种配置方法,一种是使用配置文件来配置,关于Blazor的配置,您可以参考文章:
配置文件wwwroot/appsettings.json:
然后在项目的Program.cs中添加扩展Microsoft.Extensions.Logging的引用:
然后在Porgram.Main(文件:Program.cs)中配置日志:
在这里我们需要回顾一下基于WebAssembly的项目在创建Host的时候,实际上使用了WebAssemblyHostBuilder来生成WebAssenbktHosting的。
所以需要注意在Program.cs中一定要引用类:Microsoft.AspNetCore.Components.WebAssembly.Hosting, 一般通过工具或者模板创建的项目,会自动添加。
我们在WebAssembly项目里面是通过WebAssemblyHostBuilder的属性Logging来设定属性的配置的。另外需要注意的是这个属性是ILoggerBuilder的具体实现,因此如果要配置日志通过下图所示:
如果要看该属性的所有方法,只需要参考ILoggerBuilder的API就好了。
SignalR .Net 客户端中日志记录
由于我们可能想在基于WebAssembly中使用SignalR的技术来设计即时应用,所以我们会在基于WebAssembly中使用.Net的SignalR的客户端,这个时候如果在客户端这一侧使用日志该如何处理呢?
由于在应用启动的时候我们已经自动注册了ILoggerProvider的实例(在WebAssembly中是WebAssemblyConsoleLogger的实例),因此在需要使用SignalR .Net客户端的组件中直接使用依赖注入注入ILoggerProvider 就可以使用了,代码如下图:
注意需要引用扩展包,注入之后,然后在组件的life事件OnInitializedAsync中将其传入SignalR的配置中去,如下图:
需要注意的是基于WebAssembly中的日志输出是到了浏览器的console, 如下图:
以上就是基于WebAssembly的独立的配置和说明
接下来是我们如何在Razor组件中使用日志, 这个部分WebAssembly和Server是一致的。
在组件中通过ILogger来使用日志
很简单,注入Ilogger, 然后直接使用。主要根据需要引用包: Microsoft.Extensions.Logging
在组件中通过ILoggerFactory来使用日志
也很简单,代码参考片段如下: