在 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正在解决(我尝试改变各种东西,这样它就不会解决,并且我收到一条错误消息,表明它尚未解决),但是,我没有得到任何输出。
我在这里注册是不是做错了什么?
浏览了一些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>();
以下示例代码展示了如何定义并初始化 _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);
}
}