2017-03-03 2 views
1

Ich möchte Abhängigkeitsaufrufe in Application Insights herausfiltern. Ich möchte überprüfen, ob der Anruf an einen bestimmten Gastgeber gerichtet ist. Nach this approach Ich habe mit diesem kommen:Abhängigkeiten in Application Insights filtern

public class ApplicationInsightsFilter : ITelemetryProcessor 
{ 
    ... 

    IgnoredHosts = new List<string> 
    { 
     "foo.queue.core.windows.net", 
     "foo.blob.core.windows.net", 
     "bar.queue.core.windows.net", 
     "bar.blob.core.windows.net" 
    }; 

    public void Process(ITelemetry item) 
    { 
     var request = item as DependencyTelemetry; 

     if (request?.Name != null) 
     { 
      Uri uri = Uri.TryCreate(request.Name, UriKind.Absolute, out uri) ? uri : null; 
      if (uri != null && IgnoredHosts.Contains(uri.Host)) 
       return; 
     } 

     Next.Process(item); 
    } 
} 

Und in Program.cs:

public static void ConfigureLogging() 
{ 
    ... 
    TelemetryConfiguration.Active.TelemetryProcessorChainBuilder 
       .Use(next => new ApplicationInsightsFilter(next)) 
       .Build(); 
} 

Dies funktioniert beim Debuggen, bietet nicht in der Produktion. In der Produktion werden diese Anrufe noch protokolliert.

Irgendeine Idee?

Antwort

0

Es stellte sich heraus, dass, wenn Sie eine ApplicationInsights.config-Datei haben, können Sie auch den Prozessor in diese einfügen müssen:

<TelemetryProcessors> 
    <Add Type="MyWebApplication.ApplicationInsightsFilter, MyWebApplication"> 
    </Add> 
</TelemetryProcessors> 

Auch wenn die documentation sagt:

Alternativ können Sie auch die initialisieren Filter im Code.

Verwandte Themen