.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, но также работает на Мауи.