在Dropwizard项目中使用Sentry时,我遇到了一个奇怪的问题。
我在两个具有相似框架的应用程序中对其进行了配置。
其中之一是,我正在正确跟踪所有日志消息,但没有跟踪异常,应该知道,我不知道为什么。
我注意到的与运行的应用程序不同的是:
java.lang.Exception: some error
at testEndpoint(EventResource.kt:38)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)
vs可以正常运行的应用程序:
io.dropwizard.jersey.errors.LoggingExceptionMapper: Error handling a request: 22059c429b65153e
! java.lang.Exception: Test Hello Exception
! at myMethod(TestResource.kt:40)
! at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
! at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
! at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
我注意到其中涉及一个LoggingExceptionMapper,它是由Dropwizard自动激活的,但是似乎没有。
我正在使用哨兵1.7.23和Dropwizard 1.3.9
关于我的依赖关系:
implementation("io.sentry:sentry:$sentryVersion")
implementation("io.sentry:sentry-logback:$sentryVersion")
implementation("org.dhatim:dropwizard-sentry:1.3.1-1")
我最后一个依赖项是作为一个帮手,不必创建我的工厂并在config.yml上指定日志记录附加程序的值
https://github.com/dhatim/dropwizard-sentry
两个项目都以这种方式进行初始化:
Sentry.init("some-value...")
我的config.yml
logging:
level: INFO
appenders:
- type: console
- type: sentry
threshold: ${SENTRY_THRESHOLD}
dsn: ${SENTRY_DSN}
environment: ${SENTRY_ENVIRONMENT}
release: 1.0.0
有什么问题的想法吗?
由于Logback包含在Dropwizard的核心库中,因此无需依赖于日志
答案 0 :(得分:0)
LoggingExceptionMapper的实现在dropwizard-jersey项目中
尝试将依赖项添加到:dropwizard-jersey
答案 1 :(得分:0)
如果有独立性冲突,则可以用两种方法进行检查。
1)只需在cmd或IDE的控制台上使用以下命令,这将向您显示依赖关系树,您可以从树中搜索哪个库发生冲突。
mvn dependency:tree -Dverbose -Dincludes=commons-collections
2)这是查找依赖项冲突的最有效方法。在pom.xml中添加以下插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.4.1</version>
<configuration>
<rules>
<dependencyConvergence />
</rules>
</configuration>
</plugin>
然后使用 enforcer:enforce 目标构建项目,该项目将向您显示版本冲突的确切依赖关系。如果您发现任何冲突库,只需排除它们即可。
使用上述方法后,如果遇到相同的问题,请尝试使用1.3升级版本,或在添加org.glassfish.jersey.media依赖项后尝试。
希望任何一种方式都能为您服务。