我有一些最初设计为从ASP.NET Core 2.1 Web应用程序调用的服务。他们使用Microsoft.Extensions.DependencyInjection包内容将依赖项注入到其构造函数中。其中有些依赖于ILogger记录器。
public GroupService(ILogger<GroupService> logger)
{
...
}
我正在函数内构建服务提供者,以便它们仍可以按预期工作,但是我想知道我应该如何处理记录器依赖项。默认情况下,Azure Function(V2)会获得一个ILogger注入,但不能在DI容器中使用该ILogger来创建服务所需的其他记录器。
是否有一个LoggerFactory在“隐蔽的”地方注册,我可以在DI容器中使用它?我认为这将使我可以添加其他记录到功能输出窗口的记录器,还是我完全误解了登录功能的工作原理?
我是否只需要设置一个新的LoggerFactory并将该日志记录到功能项目使用的ApplicationInsights实例中?
答案 0 :(得分:1)
现在使用most recent Azure Function runtime,可以使运行时通过构造函数注入依赖项。
您现在可以从Azure函数中删除静态关键字,并具有运行时。
这是设置方法:
[assembly: WebJobsStartup(typeof(StartUp))]
public class StartUp : IWebJobsStartup
{
public void Configure(IWebJobsBuilder webJobsBuilder)
{
// Enables logging and sets the minimum level of logs.
webJobsBuilder.Services.AddLogging(loggingBuilder =>
{
loggingBuilder.SetMinimumLevel(LogLevel.Debug);
});
// Registers your services.
webJobsBuilder.Services.AddTransient<IGroupService, GroupService>();
}
}