深入浅出Blazor webassembly之Logging

===============================

Aspnet core 的日志配置文件设置

===============================

appsettings.json 文件中可以设置日志

   "Logging": {
        "LogLevel": {  //No specific provider, 将适用于所有的Provider
            "Default": "Information", //Default category for Logger Object, 即 ILogger<T> 中 T 为 category
            "Microsoft": "Warning", 
            "Microsoft.Hosting.Lifetimne": "Information"
        },
        "EventSource": {  //仅适用于 EventSource Provider
            "Default": "Information"
        }
    }

对于 blazor wsam 应用,  配置文件的logging 配置并不起任何作用. 

但可以在 program.cs Main函数用代码的形式设置最低输出级别.

 builder.Logging.SetMinimumLevel(LogLevel.Information);

 

===============================

最简单的日志输出

===============================

在Blazor wasm 程序中使用Console.WriteLine(), 即可输出到浏览器的console 中, 非常方便. 

缺点是: 没有LogLevel的控制

razor 文件中的代码:

    private void IncrementCount()
    {
        currentCount++;
        Console.WriteLine("Console.WriteLine() output. ");
    }

效果:

深入浅出Blazor webassembly之Logging

 

===============================

内置的Logging类

===============================

Blazor项目中, 在默认情况下, 即可注入 Microsoft.Extensions.Logging.Logger 日志类实例.

优点: 使用非常方便, 而且可以进行 LogLevel 控制

缺点: 仅仅能输出字符串信息, 不能直接输出 object 对象或List或数组.

razor 文件代码:

@page "/counter"
@using Microsoft.Extensions.Logging
@inject ILogger<Counter> MyLogger 


<h1>Counter</h1>

<p>Current count: @currentCount</p>

<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>

@code {
    private int currentCount = 0;

    private void IncrementCount()
    {
        currentCount++;
        MyLogger.LogInformation("LogInformation");
        MyLogger.LogTrace("LogTrace");  //内置Logger类 不支持这个Trace level
        MyLogger.LogWarning("LogWarning");
        MyLogger.LogDebug("LogDebug");
        MyLogger.LogError("LogError");
         
        MyLogger.LogCritical("LogCritical");  //输出这个记录的日志, 浏览器底部将出现一个Unhandled error 提示条
    }
}

效果如下:

深入浅出Blazor webassembly之Logging

 

 

 

===============================

增强版的 Blazor.Extensions.Logging 包

===============================

增强版的 Blazor.Extensions.Logging 包具体增强点有:

1. 能直接输出接输出object/list/array 对象

2. 支持Trace Level的日志, 不过这个用处并不大

3. logging输出格式也比较好看.

该组件的问题是:  在代码中一起输出两行 Logging , 浏览器中看到的次序正好和代码相反.

 

Blazor.Extensions.Logging 同样实现了 ILogger<T> 接口,  所以使用方式和内置的Logger类一样. 

使用步骤:

1. 为项目增加: Blazor.Extensions.Logging 包引用

dotnet add package Blazor.Extensions.Logging

2. 将 扩展logging 类注册的 DI 容器, Program.cs 的 Main() 方法中,

using Blazor.Extensions.Logging;

//Main 方法中
// Add Blazor.Extensions.Logging.BrowserConsoleLogger
builder.Services.AddLogging(builder => builder
    .AddBrowserConsole()
    .SetMinimumLevel(LogLevel.Trace)
);

 

3. 在Razor 类中, 注入 ILogger<T> 对象

@using Microsoft.Extensions.Logging  
@inject ILogger<Counter> MyLogger   


@code {

    private void IncrementCount()
    {
        currentCount++;
        MyLogger.LogInformation(MyLogger.GetType().ToString());
        MyLogger.LogInformation("1: LogInformation");        
        MyLogger.LogWarning("2: LogWarning");
        MyLogger.LogDebug("3: LogDebug");
        MyLogger.LogError("4: LogError");
        MyLogger.LogCritical("5: LogCritical");  //输出这个记录的日志, 浏览器底部不会出现一个Unhandled error 提示条
    }
}

 

 

深入浅出Blazor webassembly之Logging

 

上一篇:利用gis通过shp文件将经纬度解析为城市名


下一篇:安卓第10周