相关疑难解决方法(0)

ASP.NET Core 中的 Serilog DI,要注入哪个 ILogger 接口?

语境

我已经在我的 ASP.NET Core 应用程序中成功配置了 Serilog,只剩下 DI 部分。

现在我有两个 ILogger 接口,一个Serilog.ILoggerMicrosoft.Extensions.Logging.ILogger. 两者都基于我的 Serilog 配置工作,但我不知道该使用哪个?(我的意思是,在 Serilog 配置到位后Microsoft.Extensions.Logging.ILogger也可以通过 Serilog 正确登录,所以我的配置很荣幸)

如果Microsoft.Extensions.Logging.ILogger我知道如何配置 DI 使其工作。但是,如果Serilog.ILogger我看到 Serilog 有一个静态 Log.Logger 实例(可能是单例)

我不想在我的代码中使用这个静态属性,主要是为了测试的原因,所以我想构造函数注入它。解决方案是:

services.AddSingleton(Log.Logger); // Log.Logger is a singleton anyway
Run Code Online (Sandbox Code Playgroud)

..但是当许多多个线程将同时使用这个非常相同的实例时,我担心 Web 应用程序中的这个单例。它是线程安全的吗?如果不是,那么Serilog.ILogger与 DI一起使用的解决方案是什么?

dependency-injection serilog asp.net-core

9
推荐指数
2
解决办法
4809
查看次数