【问题标题】:Missing ETW EventSource table in Azure SDK 2.6Azure SDK 2.6 中缺少 ETW EventSource 表
【发布时间】:2015-07-24 03:06:04
【问题描述】:

我正在尝试使用 ETW 通过 Azure SDK 2.6 中的多个自定义 EventSource 类进行日志记录。

当使用计算/存储模拟器进行本地测试时,我的三个自定义 WADMyEventXYZ 表会显示出来;但是,最终的预期表“WADMyDataSets”似乎从未被创建。我应该如何确定是什么导致了这个问题?当附加调试器并单步执行调试器中的代码时,我从计算模拟器中看不到任何错误,这表明肯定调用了 EventSource 上的 WriteEntry。其他表显示在开发者存储帐户的 SchemasTable 中,但没有 WADMyDataSets 条目。

我将 WADDiagnosticInfrastrureLogsTable 导出为 CSV 并在 Excel 中检查它,并看到以下引用“MyDataSets”的消息:

验证表 MyDataSets;磁盘MB:451; RequiredQuota:451 RetentionSeconds:7776000 Pri:2 MinQuotaMB:0 RunningTotal:3757

表不存在

表 C:\Users\Caleb\AppData\Local\dftmp\Resources\b316f531-f673-4db3-ac1c-e4649e289871\WAD0104\Tables\MyDataSets 不存在,CreationDisposition = 4

表 MyDataSets 不存在,将创建一个新的

延迟表 MyDataSets 的创建,直到模式已知

稍后:

将 EventSource 提供程序名称“MyDataSets”转换为 {74a2b9c9-0bd8-547f-6cad-453da47055be}

将查询 id 为 MyDataSetsQuery 和正则表达式 ^MyDataSets$ 的任务与源表 MyDataSets 匹配

注册查询 MyDataSetsQuery_MyDataSets_XTableWadAccount:

将标准 PkRk (MA) 字段添加到“MyDataSetsQuery_MyDataSets”

成功编译查询“MyDataSetsQuery_MyDataSets”

从 MyDataSets 添加任务 MyDataSetsQuery_MyDataSets_WADMyDataSets_PT1M_XTableWadAccount - Partitions:-1 Pri:normal TSPolicy:start StoreType:Central Repeat:2147483647 Timeout:3600s Deadline:300s DelayRange:0.00

稍后:

在 2015-05-13T00:44:21.000Z 之后没有找到任务 MyDataSetsQuery_MyDataSets_WADMyDataSets_PT1M_XTableWadAccount 的检查点;重试超时为 3600 秒

MyDataSetsQuery_MyDataSets_WADMyDataSets_PT1M_XTableWadAccount 的第一个计划任务是在 2015-05-13T01:44:00.000Z(加上 20 秒的延迟)

稍后:

将任务 MyDataSetsQuery_MyDataSets_WADMyDataSets_PT1M_XTableWadAccount 的查询延迟从 20 秒增加到 40 秒,以便为上传计划引入随机性

稍后:

从 2015-05-13T01:43:00.000Z 到 2015-05-13T01:44:00.000Z 开始计划任务 MyDataSetsQuery_MyDataSets_WADMyDataSets_PT1M_XTableWadAccount;查询延迟 40 秒

表 C:\Users\Caleb\AppData\Local\dftmp\Resources\b316f531-f673-4db3-ac1c-e4649e289871\WAD0104\Tables\MyDataSets 不存在

在 1 毫秒内结束计划任务 MyDataSetsQuery_MyDataSets_WADMyDataSets_PT1M_XTableWadAccount 从 2015-05-13T01:43:00.000Z 到 2015-05-13T01:44:00.000Z

更新

有问题的 EventSource 上有一个事件:

[Event(1)]
public void DataSetLoaded(string traceActivityId, string userId, string reportCode, long timeToLoadMs)

删除第四个参数“timeToLoadMs”会导致 WAD 事件表按预期显示。我尝试将最后一个参数更改为字符串,但它未能再次出现。事件方法的参数数量是否有记录限制?我很确定我见过有四个参数的样本。

【问题讨论】:

    标签: azure etw azure-diagnostics


    【解决方案1】:

    我将我的 Web 项目升级到 .NET 4.5.1,现在 WAD 表按预期显示(在此之前我只在 .NET 4.5 上运行)。

    在使用 .NET 4.5.0 时,在 EventSource 事件上具有 4 个参数似乎可能存在错误。

    附带说明一下,在 4.5.1 中,我现在有了 System.Diagnostics.Tracing.EventSource.SetCurrentThreadActivityId 方法,它可以让我摆脱在事件输出中手动包含 CorrelationManager.ActivityId 的麻烦。

    【讨论】:

    • 我收到了一个日志Delaying the creation of table ExceptionTable until the first event directed to that table is received。我如何检查为什么它没有收到任何消息
    【解决方案2】:

    https://channel9.msdn.com/Series/ConnectOn-Demand/240 今天发布的视频说完全支持 ETW 事件源的 Azure 表日志记录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-30
      • 2016-04-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多