Azure Functions(v2):每个环境不同的日志记录行为

时间:2019-08-01 21:34:29

标签: logging deployment configuration azure-functions

我有一个具有多个功能(v2,.NET Core)的Function应用程序。此功能应用程序已部署到不同的环境(=不同的订阅)。出于开发目的,我大量使用(ILogger)日志,但是在部署到开发人员以外的其他环境时,我想关闭日志记录。通过Azure DevOps管道部署Function应用。

您建议采用哪种方法(通过代码,通过appsettings,通过host.json ...)实现这一目标?

谢谢

1 个答案:

答案 0 :(得分:3)

我还没有找到解决方案,例如可以通过例如应用程序设置,并且我不想重构代码以使用某种调试标志(尤其是因为host.json中还可能有其他特定于环境的设置)。

我现在要做的是根据环境在管道中使用PowerShell任务来设置host.json的内容。即对于存储库中的每个环境,我都有一个host.json文件,根据相应的环境,主要host.json设置为特定于环境的host.json的内容。

PowerShell任务如下所示:

###########################
# Get environment variables
$releaseEnvironment = $env:RELEASE_ENVIRONMENTNAME
$currentWorkingDirectory = $env:SYSTEM_DEFAULTWORKINGDIRECTORY

###########################
# Get config data
$configFileName = "$($releaseEnvironment)_host.json"
$configFilePath = "$currentWorkingDirectory$projectPath\Deployment\Host\$configFileName"
$configFileContent = Get-Content -Raw -Path $configFilePath | ConvertFrom-Json
Write-Host "Working with '$configFilePath'..."

###########################
# Update host.json
$pathToHostJsonInUse = "$currentWorkingDirectory$projectPath\host.json"
$configFileContent | ConvertTo-Json -Depth 100 | Set-Content -Path $pathToHostJsonInUse
Write-Host "Updated '$pathToHostJsonInUse'..."

在这种情况下有用的资源是:

https://docs.microsoft.com/en-us/azure/azure-functions/functions-monitoring#configure-categories-and-log-levels

https://docs.microsoft.com/en-us/azure/azure-functions/functions-host-json