如何将Java Wildfly Swarm应用程序与Sentry集成?

时间:2018-11-05 21:17:32

标签: java sentry wildfly-swarm

我们有一个Java Wildfly Swarm应用程序,我正在尝试将其配置为报告Sentry事件。

参考版本:

  • Wildfly BOM :org.wildfly.bom:wildfly-javaee7:10.1.0.Final
  • 群插件: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());
}

另一方面,当我通过code配置Sentry并生成事件时,它工作正常:

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

出了什么问题?

1 个答案:

答案 0 :(得分:0)

调试代码后,我意识到我的模块定义不完整。我不得不添加其他工件和依赖项:

<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的项目依赖。

仅此而已!