我尝试使用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事件表按预期显示。我尝试将最后一个参数更改为字符串,但无法再次显示。对事件方法的参数数量是否有书面限制?我很确定我看过有四个参数的样本。
答案 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表日志记录。