禁用针对特定方法的Application Insights依赖关系跟踪

时间:2017-10-26 18:08:44

标签: c# azure-application-insights

是否可以针对特定方法/功能禁用Application Insights依赖关系跟踪?

我的具体问题是我有一个自定义ITelemetryInitializer,并且在其中,我正在调用一个静态函数,如果该值尚未缓存在内存中,则该函数可以具有外部依赖性。在该函数中,它正在创建一个新的ITelemetry并调用我的ITelemetryInitializer,它会生成一个新的ITelemetry等,从而导致StackOverflowException。

基本上(这不是我的实际代码):

public void Initialize(ITelemetry telemetry)
{
    var cached = GetCachedValue();
    if(cached)
        return cached;
    else
    {
        var value = GetData();  // New Telemetry gets created here - since it's not cached yet, the new telemetry gets initialized and goes right back here.
        SetCachedValue(value);
    }
}

我正在重新设置我的初始化程序以不使用外部依赖项,但我认为这个问题仍然有效 - 如果我没有需要跟踪的具体事情,我可以禁用遥测事情(在我的例子中,我想关闭GetData方法的跟踪)?

1 个答案:

答案 0 :(得分:1)

可以使用ITelemetryProcessor(https://docs.microsoft.com/en-us/azure/application-insights/app-insights-api-filtering-sampling)禁用依赖关系跟踪。

但是这对你的情况没有帮助,因为无论如何都会首先调用ITelemetryInitializer。正确的解决方案不是从ITelemetryInitializer进行依赖调用。