使用环境变量配置Azure功能的LogLevel

Ala*_*ark 6 azure asp.net-core azure-functions

根据Azure文档,Functions V2使用.NET Core日志记录筛选器层次结构进行配置。

在下面的示例中,将ILogger的实例注入到该函数的Run方法中。

[FunctionName("MyFunction")]
public static void Run([TimerTrigger("0 */1 * * * *")]TimerInfo myTimer, ILogger logger, ExecutionContext executionContext)
{
    logger.LogInformation("I don't want to see this in production!"));
}
Run Code Online (Sandbox Code Playgroud)

检查ILogger对象时,每个LoggerInformation元素的MinLevel为null,这似乎记录了所有级别。

在生产中,我只想以错误级别登录。我希望能够使用环境变量进行配置,但是找不到任何说明如何实现此目的的文档。我尝试添加以下环境变量无效:

"logging__logLevel__Default: "Error" 
Run Code Online (Sandbox Code Playgroud)

Pra*_*SFT 17

查看 azure 函数运行时的代码 ( 1 , 2 , 3 ),这似乎是可能的。你必须将它设置为

export AzureFunctionsJobHost__logging__logLevel__default=Error
Run Code Online (Sandbox Code Playgroud)

这也适用于其他host.json设置

export AzureFunctionsJobHost__extensions__http__routePrefix=just-another-prefix
Run Code Online (Sandbox Code Playgroud)

  • 现在,[Azure Function Docs](https://docs.microsoft.com/azure/azure-functions/functions-host-json#override-hostjson-values) 中涵盖了这一点 (2认同)

Jer*_*Liu 7

恐怕我们无法使用环境变量配置日志级别。当功能主机启动时,它将从host.json相应的过滤规则中读取日志级别并注入ILogger实例。主机配置不是env变量,但是我们可以进行修改host.json以更改日志级别。

host.json中的v2日志配置

"logging": {
    "logLevel": {
     // For specific function
     "Function.MyFunction1": "Information",
     // For all functions
     "Function":"Error",
     // Default settings, e.g. for host 
     "default": "None"
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 是否有推荐的方法为生产环境和开发环境的logLevel指定不同的值? (2认同)

Pet*_*ter 5

扩展Pramod给出的答案

在门户中,导航到 Azure 函数,转到配置边栏选项卡,然后按“新建应用程序设置”:

  • 姓名: AzureFunctionsJobHost__logging__logLevel__Default

  • 价值: Error

注意。不要忘记您需要按“确定”,然后再按“配置”刀片上的“保存”。