在我的函数应用程序(v2)中,我有一个函数 probe ,该函数用于测试我的应用程序的运行状况,每隔几秒钟就会调用一次。我想停止从该特定功能到Application Insights的所有记录。
函数 probe 看起来像这样:
using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using MyApp.Api.Hello;
namespace MyApp.Api
{
public static class HealthFunctions
{
[FunctionName("probe")]
public static IActionResult Probe(
[HttpTriggerAttribute(AuthorizationLevel.Anonymous, "get")] HttpRequest request,
ILogger logger)
{
return new OkResult();
}
}
}
和host.json:
{
"version": "2.0",
"extensions": {
"http": {
"routePrefix": ""
}
},
"logging": {
"logLevel": {
"Function.probe": "Error",
"default": "Trace"
}
}
}
但是我仍然通过调用/ probe在Application Insights中看到遥测:
我做错了什么?
答案 0 :(得分:3)
更新12/09:
是的,您的评论是正确的,仍有一些有关它的消息可以登录到应用程序见解中。但是任何通过log.LogInformation()
方法记录的消息,都不应写入应用程序见解中。
我发现可以避免这种情况的另一种方法,您可以为所有其他功能应用程序指定日志级别;但不要针对您不想登录到应用程序见解的功能应用程序,请勿为其指定日志级别。然后,您可以将默认指定为无,这可以完全避免该功能应用登录到应用洞察中。
这里是一个例子:
我有3个功能应用程序,并且我不希望名为 HttpTrigger1 的功能登录到应用程序见解中。因此,在host.json中,我将其他两个功能应用程序的 loglevel 指定为 Trace : BlobTrigger1 和 QueueTrigger1 。并将默认设置为无。
在我身边的host.json:
{
"version": "2.0",
"extensions": {
"http": {
"routePrefix": ""
}
},
"logging": {
"logLevel": {
"Function.BlobTrigger1": "Trace",
"Function.QueueTrigger1": "Trace",
"default": "None"
}
}
}
屏幕截图:
它按预期工作,没有将来自“ HttpTrigger1”的日志写入Application Insights。
要从特定的azure函数禁用日志记录到应用程序见解,请在host.json中为该azure函数指定logLevel为 None (在您的情况下为 probe 强>)。示例host.json如下所示:
{
"version": "2.0",
"extensions": {
"http": {
"routePrefix": ""
}
},
"logging": {
"logLevel": {
"Function.probe": "None",
"default": "Trace"
}
}
}
然后只有名为“ probe” 的功能无法将数据发送到应用程序见解。
这是您应注意的一件事,在指定的azure函数->监视器中,创建了一个空日志(请参见下面的屏幕快照),此“空日志”意味着没有日志被写入应用程序见解中(您可以只需在应用程序见解中编写一个查询来确认这一点。我使用日志查询对其进行了测试,在应用程序见解中未显示该指定的Azure函数的日志。
答案 1 :(得分:0)
我不知道您是否需要它,但是您也可以将其指定为功能应用程序的配置。
您需要根据the spec
重写密钥对我来说,它的工作是添加一个名为"AzureFunctionsJobHost__logging__logLevel__Function.FUNCTIONNAME": "Error"
答案 2 :(得分:-1)