Как ограничить Azure Application Insights только для регистрации пользовательских событий в основном проекте dotnet? - PullRequest
2 голосов
/ 30 мая 2019

Я использую проект API ядра dotnet и включил его с помощью Azure Application Insight, в Microsoft Azure отправлено множество данных, как я могу ограничить его, чтобы он только отправлял мой обычный TrackEvent и отключал остальные.Могу ли я настроить его с помощью appsettings.json или программно?

Ответы [ 3 ]

1 голос
/ 30 мая 2019

Это может произойти, когда вы добавляете App Insights с помощью встроенной функции, предоставляемой Visual Studio.Если вы просто хотите войти в систему с помощью App Insights и не отправлять все данные телеметрии, вы можете сделать это, просто добавив несколько вещей.

В Program.cs выполните это

public static IWebHostBuilder CreateWebHostBuilder(String[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .ConfigureLogging((context, logging) =>
            {
                var instrumentationKey = context.Configuration.GetSection("ApplicationInsights:InstrumentationKey").Value;

                if (String.IsNullOrWhiteSpace(instrumentationKey))
                {
                    return;
                }

                // When not in development, remove other loggers like console, debug, event source etc.
                // and only use ApplicationInsights logging
                if (!context.HostingEnvironment.IsDevelopment())
                {
                    logging.ClearProviders();
                }

                logging.AddApplicationInsights(instrumentationKey);
            });

InВаш код везде, где вы хотите его использовать, просто введите логгер

    private readonly Repository _Repository = null;

    public MyController(Repository repository, ILogger<MyController> logger)
    {
        this._Repository = repository ?? throw new ArgumentNullException("repository");
        this._Logger = logger ?? throw new ArgumentNullException("logger");
    }

И используйте его как

_Logger.LogError(exception, errorMessage);

Для справки Документы Microsoft

0 голосов
/ 03 июля 2019

Если вам нужна только регистрация пользовательских событий с использованием пакета Microsoft.ApplicationInsights и регистрация событий с помощью TelemetryClient.TrackEvent API. Я предполагаю, что вы добавили пакет сведений о приложении Microsoft.ApplicationInsights.AspNetCore и включили автоматический сбор запросов, зависимостей и т. Д. Поскольку вы не хотите, чтобы они собирались, не включайте автоматический сбор. Как упоминал Шахзад, он, вероятно, был добавлен для вас, когда вы включили понимание приложений из Visual Studio.

0 голосов
/ 31 мая 2019

Что вам нужно, это ITelemetryProcessor .

Для ядра .net, пример кода, как показано ниже:

Добавить класс (предположим, имя класса MyTelemetryProcessor) в проект:

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

        public MyTelemetryProcessor(ITelemetryProcessor next)
        {
            this.Next = next;
        }

        public void Process(ITelemetry telemetry)
        {
            if (!(telemetry is EventTelemetry))
            {
                //if it's not EventTelemetry, abandon it
                return;
            }

            this.Next.Process(telemetry);
        }
    }

Затем в метод Startup.cs -> ConfigureServices добавьте следующий код:

        public void ConfigureServices(IServiceCollection services)
        {
            //your other code

            services.AddApplicationInsightsTelemetry();
            services.AddApplicationInsightsTelemetryProcessor<MyTelemetryProcessor>();
        }
...