首页 > 解决方案 > Blazor WebAssembly 日志记录不遵守 SetMinimumLevel

问题描述

我有一个直接从模板创建的 Blazor WebAssembly 应用程序,并且我添加了Blazor WebAssembly 日志中所述的日志记录过程

我在我的类 Program 方法 Main 中添加了行 builder.Logging.SetMinimumLevel

public class Program
{
    const string serverHttpClientName = "GoodSales.ServerAccessApi";

    public static async Task Main(string[] args)
    {
        var builder = WebAssemblyHostBuilder.CreateDefault(args);
        IConfiguration configuration = builder.Configuration;

        // JMA: Configure logging
        builder.Logging.SetMinimumLevel(LogLevel.Debug);

注意:我没有添加特定的记录器,因为导航器控制台日志对我来说已经足够了。

然后,我在我的剃须刀组件中添加了日志记录

@using Microsoft.AspNetCore.SignalR.Client
@using GoodSales.Services
@inject NavigationManager NavigationManager
@using Microsoft.Extensions.Logging;
@inject ILogger<NavMenu> logger;
@inject ILoggerProvider LoggerProvider

并在初始化方法中添加了测试线

protected override async Task OnInitializedAsync()
  {

      logger.LogDebug("LogDebug test");
      logger.LogInformation("LogInformation test");
      logger.LogWarning("LogWarning test");

但是,在导航器控制台中,我只看到 LogInformation 和 LogWarning,但看不到 LogDebug。

我错过了什么?

标签: loggingblazor-client-sideblazor-webassembly

解决方案


您可以尝试使用这个Nuget 包在我的项目中,它也会在正确配置时记录调试消息。它总是有效的,因为使用Console.WriteLine()See docs

using Blazor.WebAssembly.Logging.Console;

...

builder.Logging.AddBrowserConsole()
    .SetMinimumLevel(LogLevel.Debug) //Setting LogLevel is optional
    .AddFilter("Microsoft", LogLevel.Information); //System logs can be filtered.

注意:在 .NET 5 Blazor Web Assembly 应用程序(不在服务器端)中,如果您使用标准日志记录,它将自动登录到浏览器控制台。但是,您的浏览器可能会过滤掉一些日志。这意味着如果您不启用“详细/详细”日志记录可能不会看到DebugTrace记录。检查您的设置。

Chrome中它在这里: 在此处输入图像描述

上述所有内容仅适用于 Blazor Web Assembly(客户端)应用程序。如果您想从 Blazor 服务器托管的应用程序登录到浏览器控制台,则只能使用 3rd 方工具。使用这个 Nuget 包,它会做“魔法”。它的工作原理是通过 SignalR 通道从您的服务器发送日志到用户的浏览器并登录到控制台。由于它需要一些复杂的设置,建议遵循这个详细的文档


推荐阅读