Asp.Net Core Web应用程序中的SeriLog无法正确注入依赖项

fro*_*sty 5 serilog asp.net-core

Startup.cs Configure()方法中,我将记录器设置如下:

        Serilog.Log.Logger = new LoggerConfiguration()
            .MinimumLevel.Verbose()
            .Enrich.FromLogContext()
            .WriteTo.RollingFile(new CompactJsonFormatter(), "c:\\temp\\myapp.json")
            .CreateLogger();

        loggerFactory.AddSerilog(Serilog.Log.Logger);
Run Code Online (Sandbox Code Playgroud)

ILogger和Log.Logger始终求值为Serilog.Core.Pipeline.SilentLogger而不是设置的值。我是否缺少设置DI的任何步骤?

Lun*_*ter 0

在某些Autofac场景中可能会发生这种情况,其中builder.RegisterLogger();调用方法而不传递ILogger,但无论出于何种原因AutofacSerilogIntegration无法检测到先前创建的记录器。

如果您有一个ILogger实例,则可以将其显式传递给容器构建器,如下所示:

builder.RegisterLogger(logger);
Run Code Online (Sandbox Code Playgroud)

其中 logger 是 ILogger 实现。