Как настроить канал телеметрии для приложения Insights Log4Net Appender? - PullRequest
0 голосов
/ 20 мая 2019

Я добавил эти пакеты Nuget в свое приложение WPF:

  • Microsoft.ApplicationInsights.Log4NetAppender
  • Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel

Регистратор регистрирует файл, который работает. Но данные не передаются в Azure. Я получил эту ошибку:

  • AI: Канал телеметрии сервера не был инициализирован. Поэтому постоянное хранилище отключено. Вам нужно вызвать ServerTelemetryChannel.Initialize (). В настоящее время мониторинг будет продолжаться, но если телеметрия не может быть отправлена, она будет отброшена.

Мой вопрос: где (в коде) я должен инициализировать телеметрический канал? И почему я должен это делать? Зачем нужен appender, если мне все равно нужно добавить клиента телеметрии (с настройкой)?

Ответы [ 2 ]

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

Обновление 0603:

my app.config:

enter image description here

Отладка в Visual Studio:

enter image description here

Обновление: Пожалуйста, следуйте скриншоту ниже и попробуйте найти информацию, которую вы отправляете.И если вы по-прежнему не можете найти информацию, предоставьте подробный код (удалите личные / важные данные, такие как ключ инструментария, а также предоставьте нам пакет nuget и используемую вами версию).

1.нажмитекнопку поиска на странице обзора:

enter image description here

2. на экране поиска установите правильное значение Местное время и Тип события, затем попробуйте найтисообщение:

enter image description here


Вам лучше предоставить код для установки log4net и ключа понимания приложения.

Я сделалпростой тест с проектом wpf, приведенный ниже код работает нормально:

public partial class MainWindow : Window
{

    private static readonly ILog log = LogManager.GetLogger(typeof(MainWindow));
    public MainWindow()
    {
        TelemetryConfiguration.Active.InstrumentationKey = "the key";
        log4net.Config.XmlConfigurator.Configure();

        log.Info("wpf aaaa11111");


        InitializeComponent();
    }
 }

Появляется ошибка «AI: канал телеметрии сервера не был инициализирован», возможно, из-за неправильной конфигурации, например используйте следующий код вприведенный выше рабочий код:

//when add the code, it will cause the error you mentioned.
TelemetryConfiguration.Active.TelemetryChannel = new ServerTelemetryChannel();

Если вам необходимо добавить клиент телеметрии (с конфигурацией) и с правильной конфигурацией, как клиент log4net, так и клиент телеметрии могут отправлять данные для анализа приложений.Код как ниже:

public partial class MainWindow : Window
{
    private readonly TelemetryClient telemetryClient;
    private static readonly ILog log = LogManager.GetLogger(typeof(MainWindow));
    public MainWindow()
    {
        //configure the key here for log4net
        TelemetryConfiguration.Active.InstrumentationKey = "the key";
        log4net.Config.XmlConfigurator.Configure();

        var config = new TelemetryConfiguration();

        //configure the key here for telemetry client
        config.InstrumentationKey = "the key";
        telemetryClient = new TelemetryClient(config);

        log.Info("wpf aaaa333");
        log.Info(TelemetryConfiguration.Active.TelemetryChannel.ToString());

        telemetryClient.TrackTrace("it is going to start!");

        InitializeComponent();
    }
}
0 голосов
/ 03 июня 2019

Итак, наконец-то все работает. Я снова предлагаю необходимые шаги:

  1. Добавить NugetPackages: log4net, Microsoft.ApplicationInsights, Microsoft.ApplicationInsights.Log4NetAppender и Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel для проекта

  2. В MainWindow.xaml.cs:

    private static readonly ILog log = LogManager.GetLogger(typeof(MainWindow));
    public MainWindow()
    {
        TelemetryConfiguration.Active.InstrumentationKey = "the key";
        log4net.Config.XmlConfigurator.Configure();
    
        log.Info("wpf aaaa11111");
    
    
        InitializeComponent();
    }
    }    
    
  3. В App.config: App.config

  4. Выполнено

Большое спасибо @Ivan Yang за его решение и его время, помогающее мне!

...