通过Powershell或ARM模板启用Azure Web App的日志记录

时间:2016-04-19 20:39:55

标签: powershell azure

我发现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
    }
  }
}

如果有人成功这样做,我很乐意看到一个例子。

感谢。

1 个答案:

答案 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