Прежде всего, первая ссылка , на которую вы ссылались, не имеет ничего общего с вашей проблемой.Вы хотите регистрировать только исключения, но ссылка означает, что удаляются старые данные телеметрии, такие как Trace, в репозитории (где данные телеметрии сохраняются после загрузки в аналитическую информацию приложения).
Вы можетеиспользовать ITelemetryProcessor только для регистрации исключений.Пожалуйста, следуйте моим шагам, как показано ниже:
1.Добавьте информацию о приложении в ваш проект веб-API, щелкнув правой кнопкой мыши имя вашего проекта -> выберите Configure Application Insights
:
После добавления SDK не выбирайте Enable trace collection
:
2.Добавьте файл .cs в свой проект, а затем реализуйте свой собственный класс ITelemetryProcessor, код которого приведен ниже:
using Microsoft.ApplicationInsights.Channel;
using Microsoft.ApplicationInsights.Extensibility;
namespace WebApplicationWebApi
{
public class ExceptionsFilter:ITelemetryProcessor
{
private ITelemetryProcessor Next { get; set; }
public ExceptionsFilter(ITelemetryProcessor next)
{
this.Next = next;
}
public void Process(ITelemetry item)
{
string s = item.GetType().Name;
//if it's not exception telemetry, just return without log it to app insights.
if (s != "ExceptionTelemetry")
{
return;
}
this.Next.Process(item);
}
}
}
3. Зарегистрируйте свой собственный ITelemetryProcessor в ApplicationInsights.config.В узле добавьте <Add Type="WebApplicationWebApi.ExceptionsFilter,WebApplicationWebApi"/>
:
4. Затем запустите свой код.Чтобы убедиться, что пользовательский класс ITelemetryProcessor вызывается, вы можете установить точку останова в этом классе, чтобы увидеть, достигается ли она при запуске.
И для целей тестирования я добавляю некоторые данные телеметрии вHomeController.cs:
public class HomeController : Controller
{
TelemetryClient client = new TelemetryClient();
public ActionResult Index()
{
RequestTelemetry r1 = new RequestTelemetry();
r1.Name = "request message for testing";
client.TrackRequest(r1);
client.TrackTrace("trace message for testing wwwww.");
client.TrackException(new Exception("exception message for testing wwwww."));
ViewBag.Title = "Home Page";
return View();
}
}
5.В окне вывода вашей Visual Studio вы должны увидеть следующие сообщения:
6. Затем в Visual Studio, перейдите к Application Insights Search
(в vs -> view -> other windows -> Application Insights Search), затем проверьте, есть ли здесь какие-либо значения (если у него есть значения, такие как "4" на скриншоте ниже, нажмите на него):
7.Если в шаге 6 указаны значения, нажмите update button
, затем выберите All
:
8. Затем вы видите, что регистрируются только исключения: