【发布时间】:2022-01-03 10:55:19
【问题描述】:
我有一个应用程序,我想用这样的配置文件来配置 NLog
services.AddLogging(loggingBuilder =>
{
loggingBuilder
.ClearProviders()
.AddNLog(projectInfo.GetNLogConfigPath())
.AddFilter("Microsoft", LogLevel.Warning);
})
但是,我想从 DI 的单例服务中获取此文件位置。我搜索了一个服务提供者,但我发现的只是 loggingBuilder 服务集合(现在projectInfo 是一个局部变量)。
有没有办法在 AddLogging 扩展方法操作中获取服务提供者?
【问题讨论】:
-
此时,不存在
IServiceProvider。IServiceProvider仅在稍后创建容器时创建。这可能意味着您必须手动组合单例服务(及其可能的依赖项)并在 DI 系统中注册该实例。这使您还可以在配置 lambda 中使用该服务。 -
@Steven 好的,我认为该操作是在注册单例时像 lambda 一样稍后执行的。
标签: .net dependency-injection nlog