我有一个具有多个功能(v2,.NET Core)的Function应用程序。此功能应用程序已部署到不同的环境(=不同的订阅)。出于开发目的,我大量使用(ILogger)日志,但是在部署到开发人员以外的其他环境时,我想关闭日志记录。通过Azure DevOps管道部署Function应用。
您建议采用哪种方法(通过代码,通过appsettings,通过host.json ...)实现这一目标?
谢谢
答案 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-host-json