Как интегрировать приложения Java Wildfly Swarm с Sentry? - PullRequest
0 голосов
/ 06 ноября 2018

У нас есть приложение Java Wildfly Swarm , и я пытаюсь настроить его так, чтобы он сообщал о Sentry событиях.

Ссылочные версии:

  • Спецификация Wildfly : org.wildfly.bom:wildfly-javaee7:10.1.0.Final
  • Swarm Plugin : org.wildfly.swarm: wildfly-swarm-plugin: 2017.12.1

Я добавил следующие конфигурации:

<!-- pom.xml -->
<dependency>
  <groupId>io.sentry</groupId>
   <artifactId>sentry</artifactId>
   <version>1.7.13</version>
</dependency>

# project-defautls.yml
swarm:
  logging:
    pattern-formatters:
      LOG_FORMATTER:
        pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p (%t) [%c.%M()] %s%e%n"
    console-handlers:
      CONSOLE:
        named-formatter: LOG_FORMATTER
        level: INFO
    custom-handlers:
      SENTRY:
        module: com.sentry.jul
        attribute-class: io.sentry.jul.SentryHandler
        named-formatter: LOG_FORMATTER
        level: INFO
    root-logger:
      handlers:
      - CONSOLE
      - SENTRY

<!-- module.xml -->
<module xmlns="urn:jboss:module:1.3" name="com.sentry.jul">
    <resources>
        <artifact name="io.sentry:sentry:1.7.13" />
    </resources>
</module>

# Environment variable
SENTRY_DSN=***********

Приложение запускается нормально, но следующий фрагмент кода не генерирует события Sentry:

try {
  throw new Exception("Testing...");
} catch(Exception e) {
  logger.log(Level.SEVERE, "ERROR {0}", e.getMessage());
}

С другой стороны, он отлично работает, когда я настраиваю Sentry по коду и генерирую событие:

Sentry.init(System.getenv("SENTRY_DSN"));
SentryClient sentry = SentryClientFactory.sentryClient();
try {
  throw new Exception("Testing...");
} catch(Exception e) {
  sentry.sendException(e);
}

Что не так?

1 Ответ

0 голосов
/ 09 ноября 2018

После отладки кода я понял, что определение моего модуля было неполным. Мне пришлось добавить другие артефакты и зависимости:

<module xmlns="urn:jboss:module:1.3" name="com.sentry.jul">
    <resources>
        <artifact name="io.sentry:sentry:1.7.13" /> 
        <artifact name="com.fasterxml.jackson.core:jackson-core:2.8.7" />
    </resources>
    <dependencies>
        <module name="javax.api" />
        <module name="javax.servlet.api" />
        <module name="org.slf4j"/>
    </dependencies>
</module>

Также я заметил, что нет необходимости сохранять зависимость проекта от Sentry.

Вот и все!

...