在我的azure解决方案中,我有1个应用程序服务和2个功能应用程序记录到1个应用程序见解实例。在特定的环境中,我想减少日志记录的负载,所以我想摆脱严重性级别为0的日志。
我目前专注于功能应用程序之一,我们称之为fa1。与预期的一样,我使用ILogger作为LogDebug添加的日志记录语句未显示在应用程序见解中。但是,我可以在应用程序见解中看到以下条目:
我还看到以下条目,但是我不知道哪个服务正在生成它们:
host.json:
{
"version": "2.0",
"logging": {
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,
"excludedTypes": "Request"
}
},
"logLevel": {
"Function": "Warning",
"default": "Warning"
}
}
}
Startup.Configure():
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.AddApplicationInsights(key).SetMinimumLevel(LogLevel.Warning);
过。没有任何设置有效,上面提到的日志记录条目不断出现。
请注意,我将警告设置为仅用于测试。最后,我需要信息。
我该怎么做才能摆脱那些严重性为0的日志记录条目?
在这里查看不同的日志类别。
我会说,减少伐木,但保持重要的信息,如请求和相关设定Microsoft
,Worker
并Function.<YOUR_FUNCTION_NAME>
分类为LogLevel警告(或没有),但保留Function.<YOUR_FUNCTION_NAME>.User
所有其他的信息。这将删除大多数日志记录,但在门户网站中保留统计信息以及成功/失败日志。
这样一来,loggingBuilder.AddApplicationInsights(key).SetMinimumLevel(LogLevel.Warning);
你仅更改“功能”类别的日志级别,而不更改其他日志级别。
{
"version": "2.0",
"logging": {
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,
"excludedTypes": "Request"
}
},
"logLevel": {
"Function.<YOUR_FUNCTION_NAME>": "Warning",
"Function.<YOUR_FUNCTION_NAME>.User": "Information",
"Microsoft": "Warning",
"Worker": "Warning",
"default": "Information"
}
}
}
该类别Function.<YOUR_FUNCTION_NAME>
是一个棘手的类别。它会生成有用的日志和一些噪音。尝试将“警告”和“信息”作为日志级别,然后查看最适合你的方法。
编辑
你配置功能的方式是错误的。Azure功能会自动添加Application Insights(源)。如果要直接使用TelemetryClient
,则需要添加NuGet包Microsoft.Azure.WebJobs.Logging.ApplicationInsights,就是这样。
默认集成将从host.json
文件中获取配置。现在,你正在手动设置日志记录,由于未加载配置,因此将忽略设置。例如,这就是为什么在队列'{...}'上使用ClientRequestId'{...}'的功能'{fa1中的功能名称}'的消息轮询在5毫秒内发现0条消息的原因。属于类别Microsoft.Azure.WebJobs.Host.Queues.Listeners.QueueListener的日志,并且未对其进行过滤。因此,删除你在问题中显示的代码。
我将host.json更新为您的主机,但对所有“ logLevel”子级使用“警告”级别进行测试。我仍然看到问题中指出的日志记录条目,其严重性级别为0。
@JoaoRibeiro扩展了我的答案
编辑真的有帮助!感谢那。我想我导入了错误的AI包。使用我以前拥有的软件包(Microsoft.Extensions.Logging.ApplicationInsights),如果没有启动代码,我将无法使用ILogger <MyClass>从注入的类中进行登录。这就是为什么我添加了启动代码。现在,使用您建议的软件包,并且没有启动代码,它就从函数和注入的类中记录日志。