Да, вы можете фильтровать телеметрию, используя TelemetryProcessor
. См. документы .
. Вот пример, который исключает все SocketException из ведения журнала. Вы можете написать свою собственную логику c, чтобы решить, что исключить.
public class ExceptionTelemetryFilter : ITelemetryProcessor
{
private readonly ITelemetryProcessor _next;
public ExceptionTelemetryFilter(ITelemetryProcessor next)
{
_next = next;
}
/// <summary>
/// Exclude SocketException from logging
/// </summary>
/// <param name="item"></param>
public void Process(ITelemetry item)
{
if(!(item is ExceptionTelemetry exception) // If it is not an exception
|| !(exception.Exception is SocketException)) // or it is not a SocketException
_next.Process(item); // then log the item by sending it down the processing pipeline
}
}
Вывод состоит в том, что если вы хотите исключить элемент из журнала, вы должны не вызывать _next.Process(item)
.
Теперь включите его в набор служб, чтобы он был известен Application Insights. Для. Net Core это делается так:
public void ConfigureServices(IServiceCollection services)
{
...
services.AddApplicationInsightsTelemetry();
services.AddApplicationInsightsTelemetryProcessor<ExceptionTelemetryFilter>();
...
}
Примечание: способ регистрации процессора определяется типом приложения. См. Связанную документацию сверху для вариантов.