Azure 避免从function app登录严重级别为0的应用程序洞察

Azure 避免从function app登录严重级别为0的应用程序洞察,azure,azure-application-insights,azure-function-app,Azure,Azure Application Insights,Azure Function App,在我的azure解决方案中,我有1个应用程序服务和2个功能应用程序登录到1个application insights实例。在特定环境中,我希望减少日志记录负载,因此我希望摆脱严重级别为0的日志 我目前正专注于其中一款功能应用,我们称之为fa1。我用ILogger作为LogDebug添加的日志语句不会像预期的那样显示在应用程序洞察中。但是,我可以在application insights中看到以下条目: 对ClientRequestId为{…}的队列{…}上的函数{fa1}的名称进行轮询,在5毫秒

在我的azure解决方案中,我有1个应用程序服务和2个功能应用程序登录到1个application insights实例。在特定环境中,我希望减少日志记录负载,因此我希望摆脱严重级别为0的日志

我目前正专注于其中一款功能应用,我们称之为fa1。我用ILogger作为LogDebug添加的日志语句不会像预期的那样显示在应用程序洞察中。但是,我可以在application insights中看到以下条目:

对ClientRequestId为{…}的队列{…}上的函数{fa1}的名称进行轮询,在5毫秒内发现0条消息。 函数{fa1中函数的名称}将在轮询队列{…}之前等待60000毫秒。 我还看到以下条目,但我不知道是哪个服务生成它们:

[HostMonitor]主机进程CPU统计信息:EffectiveCores=1,CpuLoadHistory=0,0,0,0,0,0,0,AvgCpuLoad=0,MaxCpuLoad=0 [HostMonitor]主机聚合CPU负载0 host.json:

{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "excludedTypes": "Request"
      }
    },
    "logLevel": {
      "Function": "Warning",
      "default": "Warning"
    }
  }
}
启动。配置:

builder.Services.AddLogging(loggingBuilder =>
{
    var key = Environment.GetEnvironmentVariable("APPINSIGHTS_INSTRUMENTATIONKEY");
    loggingBuilder.AddApplicationInsights(key);
});
builder.Services.AddSingleton(sp => // Needed for injected ILogger<> to log in AI
{
    var key = Environment.GetEnvironmentVariable("APPINSIGHTS_INSTRUMENTATIONKEY");
    return new TelemetryConfiguration(key);
});
我尝试了loggingBuilder.AddApplicationInsightskey.SetMinimumLevelLogLevel.Warning;也 所有设置都不起作用,上面提到的日志记录条目一直出现

请注意,我只是为了测试而设置警告。最后,我需要信息


我可以做些什么来删除这些严重级别为0的日志条目?

查看不同的日志类别

我想说的是减少日志记录,但保留重要信息,如请求和依赖项,以设置Microsoft、Worker和函数。分类为LogLevel警告或无,但保留函数..用户和所有其他人的信息。这将删除大多数日志记录,但在门户中保留可用的统计信息和成功/失败日志

通过执行loggingBuilder.AddApplicationInsightskey.SetMinimumLevelLogLevel.Warning;您只是在更改功能类别的日志级别,而不是其他类别

{ 版本:2.0, 日志记录:{ 应用程序说明:{ 采样设置:{ 是的, 排除类型:请求 } }, 日志级别:{ 功能:警告, 功能..用户:信息, 微软:警告, 工人:警告, 默认值:信息 } } } 类别函数。这是个棘手的问题。它会生成有用的日志和一些噪声。尝试将警告和信息作为日志级别,看看什么最适合您

编辑 您配置函数的方式是错误的。Azure函数自动添加应用程序洞察。如果要直接使用遥测客户端,则需要添加NuGet软件包Microsoft.Azure.WebJobs.Logging.ApplicationInsights,即此


默认集成将从host.json文件中获取配置。现在您正在手动设置日志记录,由于未加载配置,因此将忽略这些设置。这就是为什么,例如,在ClientRequestId为“{…}”的队列“{…}”上对函数“{fa1中函数的名称}”进行的消息轮询在5毫秒内发现了0条消息。这些消息属于类别Microsoft.Azure.WebJobs.Host.Queues.Listeners.QueueListener已记录,且未进行筛选。因此,请删除问题中显示的代码。

查看不同的日志类别

我想说的是减少日志记录,但保留重要信息,如请求和依赖项,以设置Microsoft、Worker和函数。分类为LogLevel警告或无,但保留函数..用户和所有其他人的信息。这将删除大多数日志记录,但在门户中保留可用的统计信息和成功/失败日志

通过执行loggingBuilder.AddApplicationInsightskey.SetMinimumLevelLogLevel.Warning;您只是在更改功能类别的日志级别,而不是其他类别

{ 版本:2.0, 日志记录:{ 应用程序说明:{ 采样设置:{ 是的, 排除类型:请求 } }, 日志级别:{ 功能:警告, 功能..用户:信息, 微软:警告, 工人:警告, 默认值:信息 } } } 类别函数。这是个棘手的问题。它会生成有用的日志和一些噪声。尝试将警告和信息作为日志级别,看看什么最适合您

编辑 您配置函数的方式是错误的。Azure函数自动添加应用程序洞察。如果要直接使用遥测客户端,则需要添加NuGet软件包Microsoft.Azure.WebJobs.Logging.ApplicationInsights,即此

默认集成将从host.json文件中获取配置。现在您正在手动设置日志记录,由于未加载配置,因此将忽略这些设置。这就是为什么,例如,在ClientRequestId为“{…}”的队列“{…}”上对函数“{fa1中函数的名称}”进行的消息轮询在5毫秒内发现了0条属于类别Microsoft.Azure.WebJobs.Host.Queues.Listeners.Qu的消息
eueListener已被记录,未被过滤。因此,请删除您在问题中显示的代码。

我将my host.json更新为您的,但出于测试目的,为logLevel的所有子级添加了警告级别。我仍然看到问题中的日志条目,它们的严重性级别为0。@JoaoRibeiro扩展了我的回答编辑真的很有帮助!谢谢你。我猜我输入了错误的人工智能软件包。使用Microsoft.Extensions.Logging.ApplicationInsights之前的软件包,如果没有启动代码,我无法使用ILogger从注入的类中进行日志记录。这就是我添加启动代码的原因。现在有了您建议的包,并且没有启动代码,它从函数和注入类中记录。我将我的host.json更新为您的,但出于测试目的,为logLevel的所有子级都添加了警告级别。我仍然看到问题中的日志条目,它们的严重性级别为0。@JoaoRibeiro扩展了我的回答编辑真的很有帮助!谢谢你。我猜我输入了错误的人工智能软件包。使用Microsoft.Extensions.Logging.ApplicationInsights之前的软件包,如果没有启动代码,我无法使用ILogger从注入的类中进行日志记录。这就是我添加启动代码的原因。现在,有了您建议的包,并且没有启动代码,它将从函数和注入类中记录日志。