解决 Azure 函数中的 Microsoft.Extensions.Logging

问题描述 投票:0回答:2

在 Azure 函数中,我正在注册这样的记录器:

builder.Services
    .AddLogging(config => config.AddApplicationInsights())

然后我在这样的函数中解决它:

public async Task Run([TimerTrigger("0 * 1 * * *")]TimerInfo timer, ILogger log)

这个效果很好。记录器已解析并记录。然而,我有一个类,我也在启动时注册为瞬态,并且该类有一个像这样注入的记录器:

 public MyService(ILogger<MyService> logger)
 {
     _logger = logger;
 }

我的问题是,当我从

MyService
调用方法时,我没有得到日志输出。看起来它is正在解决(我尝试改变各种东西,这样它就不会解决,并且我收到一条错误消息,表明它尚未解决),但是,我没有得到任何输出。

我在这里注册是不是做错了什么?

logging azure-functions
2个回答
0
投票

浏览了一些github帖子后,看起来可以这样完成。

 private readonly ILogger _logger;
 public MyService(ILoggerFactory loggerFactory)
 {
     _logger = loggerFactory.CreateLogger<MyService>();
 }
 DoSomething()
 {
  //Use _logger to log info
 }

您还应该确保您的服务已在

Startup
中注册,如下所示
builder.Services.AddTransient<IMyService, MyService>();


0
投票

以下示例代码展示了如何定义并初始化 _logger 对象,然后可以在 Azure Functions 中使用该对象

public class SampleClassNm
{
    private readonly ILogger<SampleClassNm> _logger;

    public SampleClassNm(ILogger<SampleClassNm> logger)
    {
        _logger = logger;
    }

    [Function(nameof(SampleClassNm))]
    public void Run([EventGridTrigger] CloudEvent cloudEvent)
    {
        _logger.LogInformation("Event type: {type}, Event subject: {subject}", cloudEvent.Type, cloudEvent.Subject);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.