.net Maui Blazor не может ввести Serilog

Цель: внедрить Serilog в приложение .net Maui Blazor с помощью внедрения зависимостей.

Я могу получить статический метод в файле MauiProgram.cs для правильного ведения журнала, но я не могу регистрироваться где-либо еще в приложении.

Я пробовал различные настройки, указанные в этих документах, https://github.com/serilog/serilog-extensions-logging

Я также попробовал решение .net Blazor (не Maui), о котором здесь сообщалось, но безрезультатно: ведение журнала приложения Blazor с помощью Serilog

я добавил

      using Serilog;

на мой импорт.бритва.

Я пытался:

      builder.Services.AddLogging(loggingBuilder => 
    loggingBuilder.AddSerilog(Log.Logger, dispose: true));

А также:

      builder.Logging.AddSerilog(Log.Logger, dispose: true);

    

MauiProgram.cs:

      using Microsoft.AspNetCore.Components.WebView.Maui;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Maui.Controls.Hosting;
using Microsoft.Maui.Hosting;
using SortedDesktop.Data;
using MudBlazor.Services;
using Serilog;
using Serilog.Events;
using System;

namespace Desktop
{
public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {
         Log.Logger = new LoggerConfiguration()
        .MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
        .MinimumLevel.Override("System", LogEventLevel.Warning)
        .Enrich.FromLogContext()
        .WriteTo.Seq("http://adomain.com")
        .CreateLogger();

        var builder = MauiApp.CreateBuilder();

        builder
            .RegisterBlazorMauiWebView()
            .UseMauiApp<App>()
            .ConfigureFonts(fonts =>
            {
                fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
            });

        builder.Services.AddBlazorWebView();
        builder.Services.AddSingleton<WeatherForecastService>();          
        builder.Services.AddMudServices();

        //builder.Services.AddLogging(loggingBuilder => 
        //    loggingBuilder.AddSerilog(Log.Logger, dispose: true));

        builder.Logging.AddSerilog(Log.Logger, dispose: true);

        try
        {
            Log.Information("Starting desktop app");
            return builder.Build();

        }
        catch (Exception ex)
        {
            Log.Fatal(ex, "Host terminated unexpectedly");
        }
        finally
        {
            Log.CloseAndFlush();
        }

        return builder.Build();

    }
}
}

Как я уже упоминал, приведенный выше статический вызов Log.Information здесь отлично работает.

Страница бритвы

      @inject ILogger<AddJob> logger;

@code {
protected override void OnInitialized()
{
    logger.LogDebug("Add Job initialized");
    Log.Information("Add Job initialized (static method call)");
}
}

Ни один из приведенных выше вызовов не работает.

1 ответ

У меня на Мауи работала библиотека Serilog-Ilogger-Blazor

https://github.com/pablopioli/serilog-ilogger-blazor

Он был построен для Blazor, но также работает на Мауи.

Другие вопросы по тегам