Настройка ведения журнала с помощью Blazor WebAssembly - PullRequest
1 голос
/ 25 октября 2019

Я провожу некоторые эксперименты с 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 называется, но мойlogger никогда не создается или получает Log -calls.

Я что-то здесь не так делаю или регистрация в Blazor WebAssembly просто еще не готова?

...