我有一个带有 HTTP 触发器(Java,运行时版本 ~4)的 Azure 函数,并且想要覆盖此特定函数的日志记录级别:
@FunctionName("Stores")
public HttpResponseMessage getStores(
@HttpTrigger(...
...
context.getLogger().log(Level.FINE, "Test message with level " + Level.FINE);
...
我可以在 host.json 中设置特定于功能的日志级别,这工作正常(本地 和 在云中):
"logging": {
"logLevel": {
"Function.Stores.User": "Trace"
}
}
当我使用以下语法时,覆盖
local.settings.json
中的日志级别效果很好:
"AzureFunctionsJobHost__logging__logLevel__Function.Stores.User": "Trace"
请注意,我不能用双下划线替换
Function.Stores.User
部分中的点,如https://learn.microsoft.com/en-us/azure/azure-functions/configure-monitoring? 中所述?选项卡=v2。文档中的这部分似乎是错误的。
但是当我将具有值
AzureFunctionsJobHost__logging__logLevel__Function.Stores.User
的设置 Trace
添加到云门户中的应用程序设置时,它没有任何效果。
这是一个错误还是我的设置有问题?
我不能用双下划线替换部分
中的点,如记录的那样Function.Stores.User
您应该能够通过创建具有特定格式的等效应用程序设置来覆盖 host.json 值。
Host.json路径:
logging.logLevel.default
AzureFunctionsJobHost__logging__logLevel__default
Host.json路径:
logging.logLevel.Host.Aggregator
AzureFunctionsJobHost__logging__logLevel__Host__Aggregator
Host.json路径:
logging.logLevel.Function
AzureFunctionsJobHost__logging__logLevel__Function
Host.json路径:
logging.logLevel.Function.Function1
AzureFunctionsJobHost__logging__logLevel__Function__Function1
Host.json路径:
logging.logLevel.Function.Function1.User
AzureFunctionsJobHost__logging__logLevel__Function__Function1__User
您提供的上述设置没有明显问题。 Azure Functions 环境中可能存在错误问题或意外行为。
我尝试过以下设置。
主机.json
{
"version": "2.0",
"logging": {
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,
"excludedTypes": "Request"
}
},
"logLevel": {
"Function": "Error",
"Function_http_trigger": "Information"
}
},
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.*, 5.0.0)"
}
}