为什么我的Azure Function不遵循环境变量日志设置却遵循host.json?

1 投票
1 回答
39 浏览
提问于 2025-04-14 17:21

我通过opentelemetry添加了日志记录,现在我发现日志出现了重复的条目,因为它们同时通过函数的处理程序和opentelemetry的处理程序发送。

我想要关闭函数的日志记录,因为opentelemetry通过OperationID/ParentID提供了跟踪信息,这样opentelemetry的日志就能更好地关联和使用。因此,现在需要在单个函数中禁用函数的日志记录,因为其他函数还没有进行这种设置。

根据这份文档,我应该能够设置环境变量,比如:

AzureFunctionsJobHost__logging__logLevel__Function__MyFunction__User

来控制日志记录,同时覆盖其他设置。我发现像这样的主机级设置:

AzureFunctionsJobHost__logging__logLevel__Function=None

确实有效,基本上是禁用了所有日志记录,但在单个函数级别(带有__MyFunction__User后缀)时,这个设置却被忽略了。

我还注意到通过host.json的设置也有效:

{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "excludedTypes": "Request"
      }
    },
    "logLevel": {
      "Function": "Information",
      "Function.MyFunction.User": "None"
    }
  }
}

以上方法达到了目标,但我更喜欢通过环境变量进行配置。我是不是漏掉了什么?

1 个回答

0

我尝试使用下面的设置,但只有在我在host.json中为单个函数将日志级别设置为无时,日志记录才被禁用。而在添加环境变量设置后,它仍然没有生效。

环境设置:-

"name": "AzureFunctionsJobHost__logging__logLevel__Function__http_trigger__User",
"value": "None",
"name": "AzureFunctionsJobHost__logging__logLevel__Function__http_trigger",
"value": "None",

host.json:-

{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "excludedTypes": "Request"
      }
    },
    "logLevel": {
     "Function.http_trigger"  : "Information",
     "Function.timer_trigger" : "Information"
    }  
  },
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle",
    "version": "[4.*, 5.0.0)"
  }
}

函数日志仍然可见:-

在这里输入图片描述

但是当我在host.json中将loglevel设置为无时,函数触发的日志就被禁用了:-

host.json:-

{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "excludedTypes": "Request"
      }
    },
    "logLevel": {
     "Function.http_trigger"  : "None",
     "Function.timer_trigger" : "None"
    }  
  },
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle",
    "version": "[4.*, 5.0.0)"
  }
}

输出:-

在这里输入图片描述

这看起来像是一个bug。我已经在Github上提交了一个问题,希望这个设置能正常工作,关注这个问题以获取后续更新。

撰写回答