【发布时间】:2020-08-08 05:26:19
【问题描述】:
上下文
我已经在我的 ASP.NET Core 应用程序中成功配置了 Serilog,只剩下 DI 部分。
问题
现在我有两个ILogger接口,一个是Serilog.ILogger,另一个是Microsoft.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
..但是当许多多个线程将同时使用同一个实例时,我担心 Web 应用程序中的这个单例。它是线程安全的吗?如果不是,那么将Serilog.ILogger 与 DI 一起使用的解决方案是什么?
【问题讨论】:
标签: asp.net-core dependency-injection serilog