gpt4 book ai didi

asp.net-core - 使用 Blazor WebAssembly 设置日志记录

转载 作者:行者123 更新时间:2023-12-05 07:17:58 25 4
gpt4 key购买 nike

我正在使用 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

作为备用,我尝试通过 Startup.cs 中的 ConfigureServices 进行设置:

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 进行日志记录还没有准备好?

最佳答案

我正在尝试类似的东西。在我的例子中,调用了 MyLogger 中的 Log 方法;但是它在以下代码行失败

using (var streamWriter = new StreamWriter(fullFilePath, true)) //Fails here 
{
streamWriter.WriteLine(logRecord);
}

当我把它放在 try catch block 中时,我得到了异常“Children could not be evaluated”。在研究时,我遇到了以下链接。 Steve Sanderson 的回应可能解释了这种行为

Reading local files #16156

顺便说一句,已经很久了,请让我知道你想出的解决方案。

关于asp.net-core - 使用 Blazor WebAssembly 设置日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58553797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com