Как заставить App Insights печатать на консоли на NET Core 3.1? - PullRequest
0 голосов
/ 22 февраля 2020

У меня есть консольное приложение. NET Core 3.1, инициализированное с помощью Host.CreateDefaultBuilder. Я правильно настроил его и на портале Azure вижу, что TelemetryClient правильно загружает все события.

Для целей диагностики c я хотел бы подключиться к Application Insights, чтобы он печатал события проходя через это к консоли. В идеале я мог бы отформатировать его так, как я хочу, пока он печатается, но это вторично.

Возможно ли это?

Спасибо!

1 Ответ

2 голосов
/ 24 февраля 2020

Если у кого-то есть такой же вопрос, это можно сделать, написав свой собственный процессор. Например, этот код запишет в консоль именно то, что показано в результатах отладки:

using System;
using System.Text;
using Microsoft.ApplicationInsights.Channel;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.ApplicationInsights.Extensibility.Implementation;

namespace YourNamespace
{
    public class TelemetryConsoleWritingProcessor : ITelemetryProcessor
    {
        private ITelemetryProcessor Next { get; set; }

        public TelemetryConsoleWritingProcessor(ITelemetryProcessor next) => Next = next;

        public void Process(ITelemetry item)
        {
            byte[] serializedItem = JsonSerializer.Serialize(new ITelemetry[] { item }, false);
            string jsonItem = Encoding.UTF8.GetString(serializedItem);
            Console.WriteLine($"Application Insights Telemetry: {jsonItem}");
            Next.Process(item);
        }
    }
}

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

options.TelemetryProcessorChainBuilder.Use(next => new TelemetryConsoleWritingProcessor(next));

Хотя это работает, вывод довольно подробный для консоли. Поэтому моя личная реализация нацелена на определенные c типы элементов внутри Process () и настраивает их индивидуально только для консоли.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...