Можно ли отключить отслеживание аналитики приложений в конкретном контроллере c web api? - PullRequest
0 голосов
/ 08 мая 2020

У меня есть проект Asp. net core web api, и я добавил простейшую конфигурацию аналитики приложения в файл Startup.cs.

 services.AddApplicationInsightsTelemetry();

Все в порядке и данные отправлено на Azure правильно, но теперь мне нужно остановить отслеживание данных с определенного контроллера c, потому что он делает запрос к внешнему API, и когда он терпит неудачу, я могу управлять потоком, но я не хочу их видеть ошибка портала аналитики приложений.

Ответы [ 2 ]

0 голосов
/ 11 мая 2020

Вы можете использовать процессор телеметрии , чтобы отфильтровать данные из указанного контроллера, пример кода, как показано ниже:

public class CustomControllerFilter : ITelemetryProcessor
{
    private ITelemetryProcessor Next { get; set; }

    public CustomControllerFilter(ITelemetryProcessor next)
    {
        this.Next = next;
    }
    public void Process(ITelemetry item)
    {
        RequestTelemetry telemetry = item as RequestTelemetry;

        if (telemetry != null)
        {
            //the test controller
            if (telemetry.Url.AbsoluteUri.Contains("/test/"))
            {
                return;
            }
        }


        this.Next.Process(item);
    }
}

Затем зарегистрируйте его в Startup.cs -> ConfigureServices метод:

    public void ConfigureServices(IServiceCollection services)
    {
        //other code
        services.AddApplicationInsightsTelemetry();

        //register it here
        services.AddApplicationInsightsTelemetryProcessor<CustomControllerFilter>();
    }
0 голосов
/ 09 мая 2020

Вы можете создать метод, чтобы отключить его и вызвать контроллер. Этот метод будет включать:

TelemetryConfiguration.Active.DisableTelemetry = true;

Другой вариант - изменение настроек приложения. json для управления ведением журнала, выполняемым ApplicationInsights. Примерно следующее в настройках приложения. json убедитесь, что Applicationinsights отправляет трассировки только для журналов с серьезностью> = Предупреждение.

{
  "Logging": {
    "IncludeScopes": false,
    "Debug": {
      "LogLevel": {
        "Default": "Trace"
      }
    },
    "Console": {
      "LogLevel": {
        "Default": "Warning"
      }
    },
    "ApplicationInsights": {
      "LogLevel": {
        "Default": "Warning"
      }
    }
  }
}
...