首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.net Maui无法注射Serilog

.net Maui无法注射Serilog
EN

Stack Overflow用户
提问于 2021-10-18 02:37:30
回答 1查看 922关注 0票数 0

目标:使用依赖注入将Serilog实现到.net Maui应用程序中。

我能够使MauiProgram.cs文件中的静态方法正确地进行日志记录,但是我无法在应用程序中的任何其他地方进行日志记录。

我尝试过各种设置,如这些docs,https://github.com/serilog/serilog-extensions-logging中所示

我还尝试了这里报告的.net Blazor (不是Maui)解决方案,但是没有结果:Blazor application logging with Serilog

我加了

代码语言:javascript
复制
using Serilog;

敬我的imports.razor。

我试过:

代码语言:javascript
复制
builder.Services.AddLogging(loggingBuilder => 
    loggingBuilder.AddSerilog(Log.Logger, dispose: true));

和:

代码语言:javascript
复制
builder.Logging.AddSerilog(Log.Logger, dispose: true);

MauiProgram.cs:

代码语言:javascript
复制
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的静态调用在这里工作得很好。

Razor页面

代码语言:javascript
复制
@inject ILogger<AddJob> logger;

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

上面的电话都不起作用。

EN

回答 1

Stack Overflow用户

发布于 2021-11-26 19:41:22

西里罗格-伊洛格-布拉兹尔图书馆为我在毛伊岛工作

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

它是为巴兹尔建造的,但也适用于毛伊岛。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69610206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档