我发现question触及了我的问题,但没有任何具体的解决方案,我希望有人解决了这个问题:
我在Azure中运行Web应用程序并且我们正在使用v2存储帐户。我已确定Powershell允许将Web应用程序记录到v1(Enable-AzureWebsiteApplicationDiagnostic),但没有任何内容允许我登录到v2存储blob。
虽然门户网站中的UI允许我进行设置,但我正在通过Powershell寻找一种方法来实现CI和自动部署。
----更新re:Set-AzureRMWebApp ----
我还尝试使用Set-AzureRMWebApp命令通过Powershell执行此操作。我可能会在语法上绊倒,但是还没有能够让它工作。我熟悉资源浏览器,但是还没有能够通过powershell将包含类似内容的条目放入配置中:
{
"id": "/subscriptions/../config/logs",
"name": "logs",
"type": "Microsoft.Web/sites/config",
"location": "East US",
"tags": {
"azenv": "dev",
},
"properties": {
"applicationLogs": {
"fileSystem": {
"level": "Off"
},
"azureTableStorage": {
"level": "Off",
"sasUrl": "MY_SAS_URL"
},
"azureBlobStorage": {
"level": "Information",
"sasUrl": "MY_SAS_URL",
"retentionInDays": 7
}
},
"httpLogs": {
"fileSystem": {
"retentionInMb": 35,
"retentionInDays": null,
"enabled": false
},
"azureBlobStorage": {
"sasUrl": null,
"retentionInDays": null,
"enabled": false
}
},
"failedRequestsTracing": {
"enabled": true
},
"detailedErrorMessages": {
"enabled": true
}
}
}
如果有人成功这样做,我很乐意看到一个例子。
感谢。
答案 0 :(得分:1)
我已使用PowerShell通过向Blob存储添加SAS URL来配置日志记录到Blob存储。有趣的是,一些设置存储为AppSettings。 您可以使用此代码生成SAS令牌并在您的Web应用程序中对其进行配置:
$sa = Get-AzureRmStorageAccount -ResourceGroupName "loremipsumresourcegroup" -Name "loremipsumstore"
New-AzureStorageContainer -Context $sa.Context -Name "webapp-logs" -ErrorAction Ignore
$sasToken = New-AzureStorageContainerSASToken -Context $sa.Context -Name "webapp-logs" -FullUri -Permission rwdl -StartTime (Get-Date).Date -ExpiryTime (Get-Date).Date.AddYears(200)
$webApp = Get-AzureRmWebApp -ResourceGroupName "loremipsumresourcegroup" -Name "LoremIpsumWebApp"
$appSettings = [ordered]@{}
$webapp.SiteConfig.AppSettings | % { $appSettings[$_.Name] = $_.Value }
$appSettings.DIAGNOSTICS_AZUREBLOBCONTAINERSASURL = [string]$sasToken
Set-AzureRmWebApp -ResourceGroupName "loremipsumresourcegroup" -Name "LoremIpsumWebApp" -AppSettings $appSettings
有关代码工作原理的更多说明,请参阅我的blogpost。