微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java Micrometer @Counted - @ExceptionHandler 的 exception="none" 和 result="success"?

如何解决Java Micrometer @Counted - @ExceptionHandler 的 exception="none" 和 result="success"?

关于带有@Counted 和@ExceptionHandler 的 Java Micrometer 的快速问题。

我有一个非常简单的@ExceptionHandler:

    @ExceptionHandler
    @Counted(value = "MY_EXCEPTION",description = "SOME_DESCRIPTION")
    public Mono<ResponseEntity<String>> myCoolExceptionHandler(final RuntimeException runtimeException) {
        System.err.println("an exception!" + runtimeException);
        return Mono.just("bad");
    }

我认为这种组合非常有趣,因为它提供了异常发生的可见性。我们可以构建仪表板、警报等,非常酷。

不幸的是,当我查看生成的指标时,它类似于:

# HELP MY_EXCEPTION_total SOME_DESCRIPTION
# TYPE MY_EXCEPTION_total counter
MY_EXCEPTION_total{class="package.MyController",exception="none",method="myCoolExceptionHandler",result="success",} 3.0

我对 exception="none"result="success"

感到很困惑

请问这些值最初是如何进入指标的?

另外,如何把它们改成更有意义的东西,比如异常类?

谢谢!

解决方法

被注解的方法本身不会抛出异常并且总是正常完成。所以注解安装的拦截代码永远不会记录异常(exception=none),结果总是好的(result=success)。只有从注释方法中抛出的异常才会被记录为错误结果。

您始终可以通过注入 MetricRegistry 然后使用适当的名称和标签注册指标来手动记录指标。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。