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* 样式的日志记录?你能确认它应该工作吗? 我认为您可能缺少 你解决过这个问题吗?我有类似的问题 【参考方案1】:

你是如何部署的?在相同的设置(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 函数 SDK 导致 Newtonsoft 问题

azure-devops-extension-sdk:小部件的配置

Azure.Messaging.ServiceBus SDK 中“UserProperties”属性的等效项

Azure Storage Blob Go SDK示例

添加 VS 2015 SDK 后 Azure 存储模拟器失败