Azure Web 应用程序日志到存储帐户容器

Azure Web 应用程序日志到存储帐户容器

我的团队有一个在 Azure 中运行的 .NET (4.7) Web 应用程序。目前网络上有三个目录正在创建D 盘 - 缓存、临时文件和根目录。日志文件被转储到这里。我担心这些日志文件会占用空间并使应用程序崩溃。

是否有可能将这些应用程序存储在 blob 容器中,而不是存储在 Web 应用程序中? 我创建了一个存储帐户三个容器(缓存、临时、根),已使用存储资源管理器创建共享访问签名 (SAS)每个容器,然后将为 SAS 生成的 URL 粘贴到Web 应用的应用设置。我重启了应用程序没有文件被倾倒进容器。

我是不是缺少了什么才能让它工作?我不是开发人员,所以我不确定是否需要在代码中设置一些东西才能让它工作。我注意到网页配置指定了 D:\home...... 位置,所以我以为添加容器位置会起作用,但我想不会。任何想法或建议都将不胜感激。

答案1

尝试通过 PowerShell 执行此操作,如下所述这里:

配置分 6 个步骤完成。

  1. 我们获得了想要存储应用程序日志的存储帐户。

$sa = Get-AzureRmStorageAccount-ResourceGroupName“loremipsumresourcegroup”-名称“loremipsumstore”

  1. 我们确保有一个容器来存储日志。因为我们可以多次运行该脚本,所以如果容器已经存在,我们会忽略该错误。

New-AzureStorageContainer -Context $sa.Context -Name“webapp-logs”-ErrorAction 忽略

  1. 接下来,我们为容器生成 SAS 令牌。我们使用与 Microsoft 使用 Azure 门户创建链接时相同的设置。

$sasToken = New-AzureStorageContainerSASToken -Context $sa.Context -Name“webapp-logs”-FullUri -Permission rwdl -StartTime(获取日期).Date -ExpiryTime(获取日期).Date.AddYears(200)

  1. 我们想要更新 AppSettings,因为配置存储在那里。但是当您更新 AppSettings 时,更新中不存在的任何设置都将被删除。因此,我们首先要获取所有现有的 AppSettings。

$webApp = Get-AzureRmWebApp -ResourceGroupName“loremipsumresourcegroup”-名称“LoremIpsumWebApp”

  1. 奇怪的是,Set-AzureRmWebApp 命令不接受我们从 Get-AzureRmWebApp 命令获得的 SiteConfig.AppSettings。我们需要为此创建一个哈希表。为了确保应用程序设置保持相同的顺序,我们将哈希表定义为有序的。

$appSettings = [已排序]@{} $webapp.SiteConfig.AppSettings | % { $appSettings[$.名称] = $.值 } $appSettings.DIAGNOSTICS_AZUREBLOBCONTAINERSASURL = [字符串]$sasToken

  1. 现在我们可以使用 Set-AzureRmWebApp 命令更新应用服务。

设置 AzureRmWebApp -ResourceGroupName“loremipsumresourcegroup”-名称“LoremIpsumWebApp”-AppSettings $appSettings

全部归功于米歇尔·霍姆普斯

相关内容