Azure 避免从function app登录严重级别为0的应用程序洞察
在我的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: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毫秒
{
"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