某些跟踪日志未与请求关联

时间:2017-01-13 14:25:56

标签: azure logging azure-application-insights

enter image description here

这是我们在Azure上托管的.NET API(ASP.NET& NancyFX)的跟踪。所有跟踪语句都属于底部显示的请求。对trace函数的调用实际上不在基本请求方法中,而是在从基本请求方法调用的异步函数中。正如您在图像中看到的,一些跟踪消息已被分配了“操作ID”(请求ID),但有些则没有。如果我单击该请求,我可以向下钻取并查看这3个初始跟踪,但不是后者2.我必须做的是在跟踪消息中插入一个唯一的ID,[39203984]在这个例子中,所以我过滤时可以将它们绑在一起。我看不出为什么有些人有联系而其他人没有联系的原因。从图像看来,非详细跟踪是问题,但情况并非总是如此。它确实使得阅读日志变得更加困难。

跟踪都是使用Insights的“新”TrackTrace()函数生成的。

1 个答案:

答案 0 :(得分:0)

如果在异步代码运行时有一个asp.net请求上下文可用,那么通常会发生 。这是由操作相关初始值设置器设置的:

https://github.com/Microsoft/ApplicationInsights-dotnet-server/blob/8c51d66c08c1baf0844613637fa5d3ccfc7590f9/Src/Web/Web.Shared.Net/OperationCorrelationTelemetryInitializer.cs

尝试在可能的情况下使用请求的操作上下文id,并且在这里:

https://github.com/Microsoft/ApplicationInsights-dotnet-server/blob/75373e57dcf8d646c54ee188461c373f2cc98939/Src/Web/Web.Shared.Net/OperationNameTelemetryInitializer.cs

创建一个操作名称。

如果您知道比初始化程序更好的猜测,您可以在上下文中手动设置operation.id和operation.name属性。它看起来像你正在那样做,但只是将它作为跟踪的一部分发送而不是自己设置operation.id字段?