【发布时间】:2020-02-21 12:39:33
【问题描述】:
我正在使用 Blazor 进行一些实验,并希望设置日志记录。我看到 Blazor 记录到 Microsoft.Extensions.Logging 开箱即用,并且日志消息转到浏览器内的开发人员控制台。这是一个好的开始。
现在我也想尝试将消息记录到其他目的地。它可能是一个云服务。我想知道在哪里设置。在 ASP.NET Core 中,您可以使用 Program.cs 中的 ConfigureLogging 方法进行设置。但这不适用于 Blazor:
public static IWebAssemblyHostBuilder CreateHostBuilder(string[] args) =>
BlazorWebAssemblyHost.CreateDefaultBuilder()
.UseBlazorStartup<Startup>()
.ConfigureLogging(...); // <- compile error
作为后备,我正在尝试通过ConfigureServices in 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-调用。
我在这里做错了什么还是使用 Blazor WebAssembly 进行日志记录还没有准备好?
【问题讨论】:
-
能否请您使用记录器代码和
AddMyLogger -
我觉得你也需要注册自己的logger工厂
-
我已经更新了帖子。
-
@ColinBacon 是的,我有。现在使用 Blazor.Extensions.Logging。在服务器端工作得很好。不确定它在 WebAssembly 中是否有效?
标签: asp.net-core logging blazor blazor-webassembly