【问题标题】:How to integrate Java Wildfly Swarm applications with Sentry?如何将 Java Wildfly Swarm 应用程序与 Sentry 集成?
【发布时间】:2019-04-09 06:47:24
【问题描述】:

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

参考版本:

  • Wildfly BOM:org.wildfly.bom:wildfly-javaee7:10.1.0.Final
  • Swarm 插件: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=***********

应用正常启动,但是下面的代码sn-p没有生成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);
}

出了什么问题?

【问题讨论】:

  • 如果您在 DEBUG 级别登录(不是 Sentry,而是您的普通记录器),它是否说明了初始化 Sentry 或未找到附加程序的任何内容?
  • 我想知道com.sentry.jul 模块是从哪里来的。 io.sentry:sentry:1.7.13 工件当然不会发送 module.xml
  • 我在src/main/resources 中添加了com.sentry.jul 作为jboss 模块。如果我们不提供模块,则应用程序启动失败。我将更新此问题以使其清楚。
  • 不显示日志调试信息
  • 我正在尝试在我的 Eclipse IDE 中调试 io.sentry.jul.SentryHandler 的代码,看看发生了什么。我在the publish method 的第98、99、105 和107 行设置了四个断点。调试器只到达第一个。这很奇怪。

标签: java sentry wildfly-swarm


【解决方案1】:

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

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

就是这样!

【讨论】:

    猜你喜欢
    • 2018-10-31
    • 2019-01-17
    • 2014-04-12
    • 2019-09-13
    • 1970-01-01
    • 2020-08-29
    • 1970-01-01
    • 2017-08-10
    • 1970-01-01
    相关资源
    最近更新 更多