У меня есть веб-приложение Java в Azure, которое использует Logback для ведения журнала трассировки. Я пытаюсь связать ведение журнала трассировки с Application Insights в Azure, и я выполнил все инструкции для этого в документация Azure.

Вот связанная часть Maven pom.xml:

    <dependency>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>applicationinsights-web</artifactId>
        <version>[1.0,)</version>
    </dependency>
    <dependency>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>applicationinsights-core</artifactId>
        <version>[1.0,)</version>
    </dependency>
    <dependency>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>applicationinsights-logging-logback</artifactId>
        <version>[1.0,)</version>
    </dependency>
  </dependencies>

  <repositories>
    <repository>
      <id>central</id>
      <name>Central</name>
      <url>http://repo1.maven.org/maven2</url>
    </repository>
  </repositories>

Мой ApplicationInsights.xml:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE xml>
<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings" schemaVersion="2014-05-30">
  <SDKLogger />
  <InstrumentationKey>*my key here*</InstrumentationKey>
  <ContextInitializers>
  </ContextInitializers>
  <TelemetryInitializers>
    <Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebOperationIdTelemetryInitializer"/>
    <Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebOperationNameTelemetryInitializer"/>
    <Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebSessionTelemetryInitializer"/>
    <Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebUserTelemetryInitializer"/>
    <Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebUserAgentTelemetryInitializer"/>
  </TelemetryInitializers>
  <TelemetryModules>
    <Add type="com.microsoft.applicationinsights.web.extensibility.modules.WebRequestTrackingTelemetryModule"/>
    <Add type="com.microsoft.applicationinsights.web.extensibility.modules.WebSessionTrackingTelemetryModule"/>
    <Add type="com.microsoft.applicationinsights.web.extensibility.modules.WebUserTrackingTelemetryModule"/>    
  </TelemetryModules>
  <Channel>
    <!-- 
      Setting DeveloperMode to true will enable immediate transmission of the telemetry events, which can be helpful during the development process.
      Make sure to turn this off on production servers due to performance considerations.
    -->
    <DeveloperMode>true</DeveloperMode>
  </Channel>
  <DisableTelemetry>false</DisableTelemetry>
</ApplicationInsights>

Мой logback.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>

<configuration debug = "true">

    <appender class="ch.qos.logback.core.ConsoleAppender" name="STDOUT">
        <encoder>
            <Pattern>%d{HH:mm:ss.SSS} %-5level - %msg%n</Pattern>
        </encoder>
    </appender>

    <appender name="aiAppender" class="com.microsoft.applicationinsights.logback.ApplicationInsightsAppender">
    </appender>

    <root level="info">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="aiAppender"/>
    </root>

</configuration>

И мой класс, который проверяет интеграцию логгера и понимания приложения:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.microsoft.applicationinsights.TelemetryClient;
/**
 * Hello world!
 *
 */
public class App 
{
    private final static Logger LOG = LoggerFactory.getLogger("root");
    public static void main( String[] args ) throws InterruptedException
    {
        LOG.info("Logging is working");
        TelemetryClient tc = new TelemetryClient();
        tc.trackTrace("Telemetry is working");
        System.out.println( "Hello World!" );
    }
}

Когда я запускаю это, Logback отлично работает с консольным приложением, телеметрия для понимания приложений работает нормально, но журналы трассировки не попадают на портал анализа приложений. Я получаю следующую ошибку:

AI: ОШИБКА 18-10-2017 20:40, 19: Не удалось отправить, неверный запрос: {"itemsReceived": 1, "itemsAccepted": 0, "errors": [{"index": 0, "statusCode": 400, "message": "SyntaxError: Неожиданный токен I"}]}

Я искал решение этой проблемы все выше и ниже, но, похоже, не могу решить его. У кого-нибудь есть идеи? Спасибо!!

< Сильный > Update :

Вот полная трассировка стека:

09: 13: 59,774 | -INFO в ch.qos.logback.classic.LoggerContext [по умолчанию] - НЕ удалось найти ресурс [logback.groovy]
09: 13: 59,774 | -INFO в ch.qos.logback.classic.LoggerContext [по умолчанию] - НЕ удалось найти ресурс [logback-test.xml]
09: 13: 59,774 | -INFO в ch.qos.logback.classic.LoggerContext [по умолчанию] - найден ресурс [logback.xml] в [file: / C: / Users / greta / OneDrive / Eclipse% 20Water% 20Application% 20Project % 20Files / Test2 / цель / классы / logback.xml]
09: 13: 59,888 | -INFO в ch.qos.logback.core.joran.action.AppenderAction - собирается создать экземпляр приложения типа [ch.qos.logback.core.ConsoleAppender]
09: 13: 59,891 | -INFO в ch.qos.logback.core.joran.action.AppenderAction - Называть приложение как [STDOUT]
09: 13: 59,911 | -INFO в ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Предполагается тип по умолчанию [ch.qos.logback.classic.encoder.PatternLayoutEncoder] для свойства [encoder]
09: 13: 59,943 | -INFO в ch.qos.logback.core.joran.action.AppenderAction - собирается создать экземпляр приложения типа [com.microsoft.applicationinsights.logback.ApplicationInsightsAppender]
09: 13: 59,988 | -INFO в ch.qos.logback.core.joran.action.AppenderAction - Называть приложение как [aiAppender]
AI: ИНФОРМАЦИЯ 20-10-2017 09:14, 1: Файл конфигурации был успешно найден как ресурс
AI: ИНФОРМАЦИЯ 20-10-2017 09:14, 1: 'MaxTelemetryBufferCapacity': нулевое значение заменяется на '500'
AI: ИНФОРМАЦИЯ 20-10-2017 09:14, 1: 'FlushIntervalInSeconds': нулевое значение заменяется на '5'
AI: TRACE 20-10-2017 09:14, 1: Использование Http Client версии 4.3+
AI: ИНФОРМАЦИЯ 20-10-2017 09:14, 1: «Channel.MaxTransmissionStorageCapacityInMB»: нулевое значение заменяется на «10»
AI: TRACE 20-10-2017 09:14, 1: C: \ Users \ greta \ AppData \ Local \ Temp \ AISDK \ native \ 1.0.10 папка существует
AI: TRACE 20-10-2017 09:14, 1: для имени процесса Java установлено значение «javaw»
AI: TRACE 20-10-2017 09:14, 1: Успешно загруженная библиотека 'applicationinsights-core-native-win64.dll'
AI: ИНФОРМАЦИЯ 20-10-2017 09:14, 1: Файл конфигурации был успешно найден как ресурс
AI: ИНФОРМАЦИЯ 20-10-2017 09:14, 1: 'MaxTelemetryBufferCapacity': нулевое значение заменяется на '500'
AI: ИНФОРМАЦИЯ 20-10-2017 09:14, 1: 'FlushIntervalInSeconds': нулевое значение заменяется на '5'
AI: ИНФОРМАЦИЯ 20-10-2017 09:14, 1: «Channel.MaxTransmissionStorageCapacityInMB»: нулевое значение заменяется на «10»
AI: TRACE 20-10-2017 09:14, 1: C: \ Users \ greta \ AppData \ Local \ Temp \ AISDK \ native \ 1.0.10 папка существует
AI: TRACE 20-10-2017 09:14, 1: для имени процесса Java установлено значение «javaw»
AI: TRACE 20-10-2017 09:14, 1: Успешно загруженная библиотека 'applicationinsights-core-native-win64.dll'
AI: TRACE 20-10-2017 09:14, 1: Регистрация ПК «DeadLockDetector»
AI: TRACE 20-10-2017 09:14, 1: Регистрация ПК 'JvmHeapMemoryUsedPerformanceCounter'
AI: TRACE 20-10-2017 09:14, 1: Регистрация ПК 'JSDK_ProcessMemoryPerformanceCounter'
AI: TRACE 20-10-2017 09:14, 1: Регистрация ПК 'JSDK_ProcessCpuPerformanceCounter'
AI: TRACE 20-10-2017 09:14, 1: Регистрация ПК 'JSDK_WindowsPerformanceCounterAsPC'
AI: TRACE 20-10-2017 09:14, 1: Регистрация ПК «DeadLockDetector»
AI: TRACE 20-10-2017 09:14, 1: Не удалось сохранить счетчик производительности «DeadLockDetector», так как он уже есть
AI: TRACE 20-10-2017 09:14, 1: Регистрация ПК 'JvmHeapMemoryUsedPerformanceCounter'
AI: TRACE 20-10-2017 09:14, 1: не удалось сохранить счетчик производительности 'JvmHeapMemoryUsedPerformanceCounter', так как он уже существует
AI: ОШИБКА 20-10-2017 09:14, 1: Не удалось создать WindowsPerformanceCounterAsPC: «Не удалось зарегистрировать все встроенные счетчики производительности Windows.»
AI: TRACE 20-10-2017 09:14, 1: Регистрация ПК 'JSDK_ProcessMemoryPerformanceCounter'
AI: TRACE 20-10-2017 09:14, 1: не удалось сохранить счетчик производительности 'JSDK_ProcessMemoryPerformanceCounter', так как он уже существует
AI: TRACE 20-10-2017 09:14, 1: Регистрация ПК 'JSDK_ProcessCpuPerformanceCounter'
AI: TRACE 20-10-2017 09:14, 1: не удалось сохранить счетчик производительности 'JSDK_ProcessCpuPerformanceCounter', так как он уже существует
09: 14: 01,943 | -INFO в ch.qos.logback.classic.joran.action.RootLoggerAction - Установка уровня регистратора ROOT в INFO
09: 14: 01,943 | -INFO в ch.qos.logback.core.joran.action.AppenderRefAction - Присоединение приложения с именем [STDOUT] к логгеру [ROOT]
09: 14: 01,944 | -INFO в ch.qos.logback.core.joran.action.AppenderRefAction - Присоединение appender с именем [aiAppender] к логгеру [ROOT]
09: 14: 01,944 | -INFO в ch.qos.logback.classic.joran.action.ConfigurationAction - Конец настройки.
09: 14: 01,945 | -INFO в ch.qos.logback.classic.joran.JoranConfigurator@6b415f5f - Регистрация текущей конфигурации в качестве безопасной резервной точки
09: 13: 59,774 | -INFO в ch.qos.logback.classic.LoggerContext [по умолчанию] - НЕ удалось найти ресурс [logback.groovy]
09: 13: 59,774 | -INFO в ch.qos.logback.classic.LoggerContext [по умолчанию] - не может N

Есть несколько ошибок, связанных со счетчиком производительности. Я попытался найти информацию об этих ошибках, но мне не повезло. Может быть, это часть проблемы?

6
Greta 19 Окт 2017 в 07:05

3 ответа

Лучший ответ

Одна из проблем, которые я вижу здесь, заключается в том, что внутренний регистратор ИИ сообщает о неожиданном характере. Я вижу, что одна из возможных проблем заключается в том, что существует некоторая проблема в логике санации, которая препятствует отправке элемента в конечную точку, и, следовательно, вы не можете видеть данные на портале. Также есть некоторые известные проблемы с logback, которые уже упоминались на github: https://github.com/Microsoft/ApplicationInsights-Java/issues/453 Это должно ответить на ваш вопрос. Не стесняйтесь создавать еще одну проблему на Github, если вы хотите это сделать. Надеюсь, следующий публичный релиз должен это исправить.

1
Dhaval Doshi 2 Ноя 2017 в 04:22

В качестве обновления кто-то на форуме Центра разработчиков Windows указал на запись на Github: https: //github.com/Microsoft/ApplicationInsights-Java/issues/436. Я понизился до версии 1.0.9, и это решило мою проблему.

1
Greta 9 Ноя 2017 в 00:41

Выпущена новая версия Application Insights Java SDK 2.0.0-BETA. Пожалуйста, попробуйте обновить приложение до последней версии и попробуйте. Я считаю, что эта проблема решена с этим. Кроме того, вы получите много новейших функций и исправлений ошибок, кроме этого!

1
Dhaval Doshi 21 Дек 2017 в 18:02