Azure SDK 2.6中缺少ETW EventSource表

时间:2015-05-13 02:10:33

标签: azure etw azure-diagnostics

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

使用计算/存储模拟器进行本地测试时,会显示三个自定义WADMyEventXYZ表;然而,最终预期表" WADMyDataSets"似乎永远不会被创造出来。我该如何确定导致此问题的原因?我发现连接调试器时计算模拟器没有错误,并且调试器中的代码逐步显示EventSource上的WriteEntry被明确调用。其他表显示在开发人员存储帐户的SchemasTable中,但WADMyDataSets没有条目。

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

  

验证表MyDataSets; DiskMB: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和regex ^ MyDataSets $到源表MyDataSets

     

注册查询MyDataSetsQuery_MyDataSets_XTableWadAccount:

     

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

     

成功编译了查询' MyDataSetsQuery_MyDataSets'

     

从MyDataSets添加了任务MyDataSetsQuery_MyDataSets_WADMyDataSets_PT1M_XTableWadAccount - 分区:-1 Pri:正常TSPolicy:start StoreType:Central重复:2147483647超时:3600s截止日期: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不存在

     

结束计划任务MyDataSetsQuery_MyDataSets_WADMyDataSets_PT1M_XTableWadAccount从2015-05-13T01:43:00.000Z到2015-05-13T01:44:00.000Z in 1ms

更新

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

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

删除第四个参数" timeToLoadMs"导致WAD事件表按预期显示。我尝试将最后一个参数更改为字符串,但无法再次显示。对事件方法的参数数量是否有书面限制?我很确定我看过有四个参数的样本。

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分:0)

今天发布的

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