Skip to main content

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组件中使用

WebAssemblyBlazor Server没有区别

WebAssemblyBlazor 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中使用.NetSignalR的客户端,这个时候如果在客户端这一侧使用日志该如何处理呢?

由于在应用启动的时候我们已经自动注册了ILoggerProvider的实例(在WebAssembly中是WebAssemblyConsoleLogger的实例),因此在需要使用SignalR .Net客户端的组件中直接使用依赖注入注入ILoggerProvider 就可以使用了,代码如下图:

注意需要引用扩展包,注入之后,然后在组件的life事件OnInitializedAsync中将其传入SignalR的配置中去,如下图:


需要注意的是基于WebAssembly中的日志输出是到了浏览器的console, 如下图:


以上就是基于WebAssembly的独立的配置和说明

接下来是我们如何在Razor组件中使用日志, 这个部分WebAssemblyServer是一致的。

 

在组件中通过ILogger来使用日志

很简单,注入Ilogger, 然后直接使用。主要根据需要引用包: Microsoft.Extensions.Logging



在组件中通过ILoggerFactory来使用日志

也很简单,代码参考片段如下: