gpt4 book ai didi

c# - Azure 函数中的 EventGridTrigger - 日志依赖项注入(inject)不起作用

转载 作者:行者123 更新时间:2023-12-03 05:39:04 25 4
gpt4 key购买 nike

这里是开发环境版本详细信息

  • .Net核心版本:2.2
  • Visual Studio:2019

这是 startup.cs

[assembly: WebJobsStartup(typeof(Startup))]

namespace PaaS.Azure.Functions
{
public class Startup : IWebJobsStartup
{
public void Configure(IWebJobsBuilder builder)
{
var config = new ConfigurationBuilder()
.AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables()
.Build();

builder.Services
.AddSingleton<IConfiguration>(config)
.AddSingleton(serviceProvider => serviceProvider)
.AddLogging();
}
}
}

这是 EventGridTrigger

public class DataProcessingFunction
{
private readonly ILogger _log;
public DataProcessingFunction(ILogger<DataProcessingFunction> log)
{
_log = log;
}

[FunctionName("DataProcessingFunction")]
public void Run([EventGridTrigger]EventGridEvent eventGridEvent)
{
_log.LogInformation("Triggered");
}
}

Logs are not printing

但我替换了 _logLog通过传递 ILogger,它就可以工作

public void Run([EventGridTrigger]EventGridEvent eventGridEvent, ILogger Log)
{
Log.LogInformation("Triggered");
}

为什么 ILogger<DataProcessingFunction> log不起作用?

最佳答案

更新0228:

此问题仅出现在 Azure 门户中,但可以在本地运行。一件有趣的事情是日志没有显示在日志控制台中,但它确实显示在日志流控制台中(在 azure 门户 -> 功能应用 -> 平台功能 -> 日志流中):

enter image description here

enter image description here

<小时/>

原始答案:

此问题是由具有字符 "."命名空间 引起的。

如果 azure 函数的命名空间具有字符"."(在您的情况下,它是PaaS.Azure.Functions),那么您需要在 host.json 文件中指定 LogLevel,如下所示(记住右键单击 host.json 文件 -> 选择属性 -> 设置“复制到输出目录”如“如果较新则复制”):

{
"version": "2.0",
"logging": {
"logLevel": {
"PaaS.Azure.Functions": "Information"
}
}
}

然后就可以看到日志打印出来了。

如果 azure 函数的命名空间包含字符"."(假设命名空间为MyFunctionApp),那么就不需要上面的设置了,日志总是打印出来的。

关于c# - Azure 函数中的 EventGridTrigger - 日志依赖项注入(inject)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60165765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com