===============================
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. "); }
效果:
===============================
内置的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.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 提示条 } }