如何从Azure Functions V2功能中使用ILogger <T>?

Ada*_*ton 9 c# .net-core azure-functions

我有一些服务最初设计为从我的ASP.NET Core 2.1 Web应用程序调用.它们使用Microsoft.Extensions.DependencyInjection包的东西将依赖注入到它们的构造函数中.其中一些具有ILogger记录器的依赖性.

public GroupService(ILogger<GroupService> logger)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

我正在该函数中构建一个服务提供程序,以便它们仍然可以按预期工作,但我想知道我应该如何处理logger依赖项.Azure函数(V2)默认情况下会将ILogger注入其中,但不能在DI容器中使用它来创建服务所需的其他记录器.

是否有一个LoggerFactory注册在"隐藏"的地方,我可以访问我的DI容器中使用?我想这会允许我添加记录到函数输出窗口的其他记录器,或者我完全误解了函数的登录方式是如何工作的?

我只需要设置一个新的LoggerFactory并将该日志发送到函数项目使用的ApplicationInsights实例吗?

Kzr*_*tof 1

使用最新的 Azure Function 运行时,您现在可以让运行时通过构造函数注入依赖项。

现在,您可以从 Azure Function 中删除静态关键字并拥有运行时。

设置方法如下:

[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>();
    }        
}
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

1353 次

最近记录:

6 年,10 月 前