给出一个File-> New-> Azure Functions v2 App,我正在尝试引用一个ILoggerFactory
或ILogger<T>
。
我正在StartUp.cs
类中执行此操作,该类在功能应用程序启动时运行。
给出以下代码,将引发一个奇怪的异常:
var serviceProvider = builder.Services.BuildServiceProvider();
var loggerFactory = serviceProvider.GetService<ILoggerFactory>();
,但以下情况除外:
A host error has occurred
[27/02/2019 8:21:22 AM] Microsoft.Extensions.DependencyInjection: Unable to resolve service for type 'Microsoft.Azure.WebJobs.Script.IFileLoggingStatusManager' while attempting to activate 'Microsoft.Azure.WebJobs.Script.Diagnostics.HostFileLoggerProvider'.
Value cannot be null.
Parameter name: provider
有人可以解释发生了什么并提供帮助吗?
完整的测试存储库/代码可以是found here on GitHub。下载,构建和运行。
答案 0 :(得分:2)
在创建依赖项注入容器并尝试解析StartUp类中的记录器时,似乎尚未建立IFileLoggingStatusManager
所需的某些基础结构(例如HostFileLoggerProvider
)。我认为您应该将日志记录延迟到应用程序完全启动之后。
如果查看WebJobs的启动代码,您会发现记录器已添加first,之后是the external startup gets executed,最后添加了required logging services。您的案件顺序错了。