Azure SDK、Trace.Information 和 WADLogsTable
Posted
技术标签:
【中文标题】Azure SDK、Trace.Information 和 WADLogsTable【英文标题】:Azure SDK, Trace.Information and WADLogsTable 【发布时间】:2015-05-14 02:32:27 【问题描述】:我正在使用 Azure SDK 2.5 在 .NET 中编写一个新的云服务。 我知道with the 2.5 SDK rekesae 的诊断发生了一些重大变化。
我得到相互冲突的信息是我是否仍然可以使用 Azure 诊断来捕获 Trace.* 输出到 Azure 表存储中的 WADLogsTable
?
我知道我可以使用 ETW 作为替代方案,但这就是我现在所要求的。
根据this 文章,我仍然可以使用 Trace 来通过 Azure 诊断 1.3 捕获我的日志 - 据我所知,它已随 SDK 2.5 提供。
很遗憾,我无法让它工作。
我的 worker 角色的 app.config 如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.diagnostics>
<trace>
<listeners>
<add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=2.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
name="AzureDiagnostics">
<filter type="" />
</add>
</listeners>
</trace>
</system.diagnostics>
</configuration>
在我的工人角色的整个代码中,我的跟踪代码如下所示:
Trace.TraceInformation("Something happened");
我的公共 diagnostics.wadcfg 文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<PublicConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
<WadCfg>
<DiagnosticMonitorConfiguration overallQuotaInMB="4096">
<Logs scheduledTransferPeriod="PT1M" scheduledTransferLogLevelFilter="Information" />
</DiagnosticMonitorConfiguration>
</WadCfg>
<StorageAccount>mystorageAccount</StorageAccount>
</PublicConfig>
我已使用此文件通过 PowerShell 命令配置诊断服务扩展:
Set-AzureServiceDiagnosticsExtension
从未创建过 WADLogsTable。 如果我启用其他诊断服务,例如 Perf Counter,则会创建并填充相关表 (WADPerformanceCountersTable)。
我正在使用:
Visual Studio 2012 .NET 4.5.1 Azure Powershell(来自 Web 平台安装程序的最新版本) Azure SDK 2.5谁能让我摆脱痛苦? 非常感谢
【问题讨论】:
您是否尝试过使用 scheduleTransferLogLevelFilter="Error" 的默认配置的 Trace.TraceError 语句? 我没有,但是是什么让你认为这会改变什么? 您是否在新的 SDK 版本中成功使用了 Trace.Trace* 样式的日志记录?你能确认它应该工作吗? 我认为您可能缺少你是如何部署的?在相同的设置(VS2012,Azure 2.5 SDK)上,我只看到 WADLogsTable 是使用 Visual Studio“发布”向导创建的,它显然为您配置了诊断扩展。见:
https://msdn.microsoft.com/en-us/library/azure/dn873976.aspx
诊断配置必须在部署后单独应用 - 由于 Azure SDK 2.5 版使用扩展模型,诊断扩展和配置不再是部署包的一部分,必须在部署后单独应用. 当您使用发布向导部署应用程序时,Visual Studio 将为您应用扩展和配置 [...]
我无法让 PowerShell cmdlet 工作(老实说,我并没有为此付出太多努力),但作为一种解决方法,当我使用 VS“发布”向导进行部署时,创建了 WADLogsTable,我可以看到我的日志流动。当我通过 Azure 门户打包和上传时,并没有发生这种情况。
在可预见的未来可能会是这样;这种情况在 2.6 SDK 中似乎没有改变(尽管他们在 2.5 中修复了很多诊断问题):https://msdn.microsoft.com/en-us/library/azure/dn186185.aspx
【讨论】:
我们使用 PowerShell CmdLets 从那里部署命令行。 @user1454265 那么如果我们想使用 Azure 管理门户而不是 VS 发布,我们该如何实现?【参考方案2】:我刚刚创建了一个生成跟踪日志的默认工作角色,我注意到公共配置中有一个不同
<?xml version="1.0" encoding="utf-8"?>
<PublicConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
<WadCfg>
<DiagnosticMonitorConfiguration overallQuotaInMB="4096">
<WindowsEventLog scheduledTransferPeriod="PT1M">
<DataSource name="Application!*" />
</WindowsEventLog>
<Logs scheduledTransferPeriod="PT1M" scheduledTransferLogLevelFilter="Information" />
</DiagnosticMonitorConfiguration>
</WadCfg>
<StorageAccount>mystorageAccount</StorageAccount>
</PublicConfig>
【讨论】:
以上是关于Azure SDK、Trace.Information 和 WADLogsTable的主要内容,如果未能解决你的问题,请参考以下文章
使用 Blob 服务客户端查找 azure 帐户密钥失败(azure python sdk)
azure-devops-extension-sdk:小部件的配置