c# - 如何使用 ILogger来自 Azure Functions V2 函数?
问题描述
我有一些最初设计为从我的 ASP.NET Core 2.1 Web 应用程序调用的服务。他们使用 Microsoft.Extensions.DependencyInjection 包的东西将依赖项注入到他们的构造函数中。其中一些依赖于 ILogger 记录器。
public GroupService(ILogger<GroupService> logger)
{
...
}
我正在函数中构建一个服务提供程序,以便它们仍然可以按预期工作,但是我想知道我应该如何处理记录器依赖项。默认情况下,Azure 函数 (V2) 会在其中注入一个 ILogger,但不能在 DI 容器中使用它来创建服务所需的其他记录器。
是否有一个 LoggerFactory 在“秘密”的某个地方注册,我可以访问它以在我的 DI 容器中使用?我认为这将允许我添加额外的记录器来记录到函数输出窗口,还是我完全误解了一个函数的记录是如何工作的?
我是否只需要设置一个新的 LoggerFactory 并将该日志记录到函数项目使用的 ApplicationInsights 实例中?
解决方案
使用最新的 Azure 函数运行时,您现在可以让运行时通过构造函数注入您的依赖项。
您现在可以从 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>();
}
}
推荐阅读
- angularjs - Jasmine - 如何为具有命名属性和对象的数组编写测试
- java - 为什么有时swing JPanel布局会自动调整到最小
- apache - 如何只允许从 Apache Httpd 2.4 上的特定主机访问?
- r - 如何在不使用索引的情况下以 R 语言从第一行开始读取 CSV 文件中的特定行,直到某一行
- android - 如果我打算进行第二个活动或切换应用程序,回收器仅第一次加载,recyclerview 不会加载项目
- service - 将蓝牙设备名称从服务发送到活动
- python - 不确定如何阻止我的游戏冻结 [PYGAME]
- java - IntelliJ - 粉红色下划线变量......这是什么意思?
- c# - 如何在 c# windows 窗体中将类对象更改为数组列表
- android - Flutter:找不到符号 MethodCallHandler