我正在用 Blazor 做一些实验,并想设置日志记录。我看到 Blazor 记录到 Microsoft.Extensions.Logging 开箱即用,并且日志消息转到浏览器内的开发人员控制台。这是一个不错的开始。
现在我也想尝试将消息记录到其他目的地。它可能是一个云服务。我想知道在哪里设置。在 ASP.NET Core 中,您可以ConfigureLogging
使用Program.cs
. 但这不适用于 Blazor:
public static IWebAssemblyHostBuilder CreateHostBuilder(string[] args) =>
BlazorWebAssemblyHost.CreateDefaultBuilder()
.UseBlazorStartup<Startup>()
.ConfigureLogging(...); // <- compile error
作为后备,我试图通过以下方式进行ConfigureServices
设置Startup.cs
:
public void ConfigureServices(IServiceCollection services)
{
services.AddLogging(builder => builder
.AddMyLogger()
.SetMinimumLevel(LogLevel.Information));
}
与AddMyLogger
:
public static ILoggingBuilder AddMyLogger(this ILoggingBuilder builder)
{
builder.Services.AddSingleton<ILoggerProvider, MyLoggerProvider>();
return builder;
}
和MyLoggerProvider
:
public class MyLoggerProvider : ILoggerProvider
{
public ILogger CreateLogger(string categoryName)
{
return new MyLogger();
}
public void Dispose()
{
}
}
和MyLogger
:
public class MyLogger : ILogger
{
public MyLogger()
{
}
public IDisposable BeginScope<TState>(TState state)
{
return null;
}
public bool IsEnabled(LogLevel logLevel)
{
return true;
}
public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)
{
}
}
-AddMyLogger
方法被调用,但我的记录器从未创建或接收任何Log
-calls。
我在这里做错了什么还是使用 Blazor WebAssembly 登录还没有准备好?