Только исключения журнала приложений - PullRequest
0 голосов
/ 18 октября 2018

Я хочу использовать Application Insights только для регистрации исключений.Как я могу это сделать?

Я попытался найти способы отключения других настроек, таких как this , и там написано, что его невозможно отключить.

Iпопробовал ITelemetryProcessor и столкнулся с той же проблемой, что и этот вопрос .Я попробовал и конфигурацию, и кодовые способы регистрации ITelemetryProcessor, но он не срабатывает, даже если я явно выбрасываю исключение в своем контроллере Web API.

Я использую VS 2017 и создал новый .Net Framework 4.6.2 WebAPI.У меня также есть InstrumentationKey и я вижу исключение, зарегистрированное на портале Azure.

1 Ответ

0 голосов
/ 19 октября 2018

Прежде всего, первая ссылка , на которую вы ссылались, не имеет ничего общего с вашей проблемой.Вы хотите регистрировать только исключения, но ссылка означает, что удаляются старые данные телеметрии, такие как Trace, в репозитории (где данные телеметрии сохраняются после загрузки в аналитическую информацию приложения).

Вы можетеиспользовать ITelemetryProcessor только для регистрации исключений.Пожалуйста, следуйте моим шагам, как показано ниже:

1.Добавьте информацию о приложении в ваш проект веб-API, щелкнув правой кнопкой мыши имя вашего проекта -> выберите Configure Application Insights: enter image description here

После добавления SDK не выбирайте Enable trace collection: enter image description here

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"/>: enter image description here

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 вы должны увидеть следующие сообщения: enter image description here

6. Затем в Visual Studio, перейдите к Application Insights Search (в vs -> view -> other windows -> Application Insights Search), затем проверьте, есть ли здесь какие-либо значения (если у него есть значения, такие как "4" на скриншоте ниже, нажмите на него): enter image description here

7.Если в шаге 6 указаны значения, нажмите update button, затем выберите All: enter image description here

8. Затем вы видите, что регистрируются только исключения: enter image description here

...