【问题标题】:Enable logging for an Azure Web App via Powershell or ARM template通过 Powershell 或 ARM 模板为 Azure Web App 启用日志记录
【发布时间】:2016-04-19 20:39:54
【问题描述】:

我找到了一个涉及我的问题的question,但没有任何具体的解决方案,我希望有人解决了这个问题:

我在 Azure 中运行一个 Web 应用程序,我们使用的是 v2 存储帐户。我已经确定 Powershell 允许将 Web 应用程序记录到 v1 (Enable-AzureWebsiteApplicationDiagnostic),但没有任何东西可以让我记录到 v2 存储 blob。

虽然门户中的 UI 允许我进行设置,但我正在寻找一种通过 Powershell 执行此操作的方法,以实现 CI 和自动部署。

----更新:Set-AzureRMWebApp----

我还尝试通过 Powershell 使用 Set-AzureRMWebApp 命令来执行此操作。我可能会在语法上绊倒,但也无法让它工作。我熟悉资源浏览器,但无法通过 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
    }
  }
}

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

谢谢。

【问题讨论】:

  • 您是否尝试过使用“Set-AzureRMWebApp”cmdlet 启用 v2 资源的日志记录。检查此参考:Set-AzureRMWebApp on MSDN
  • 我已经尝试过这个,但还没有偶然发现一个有效的命令。我会更新我的帖子来提及。

标签: powershell azure


【解决方案1】:

我已通过使用 PowerShell 将 SAS URL 添加到 Blob 存储来配置日志记录到 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 中找到。

【讨论】:

  • 我必须执行 1 个额外的步骤。 Get-AzureRmWebApp 返回的令牌包括 URL 编码的日期。例如2018-08-29T07%3A00%3A00ZSet-AzureRmWebApp 但是需要非编码值,例如2018-08-29T07:00:00Z。我必须包括$sasToken = [System.Web.HttpUtility]::UrlDecode($sasToken)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-08
  • 1970-01-01
  • 1970-01-01
  • 2020-06-15
  • 2020-09-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多