Allow to manually tag request metrics with exceptions
Prior to this commit, some exceptions handled at the controller or handler function level would: * not bubble up to the Spring Boot error handling support * not be tagged as part of the request metrics This situation is inconsistent because in general, exceptions handled at the controller level can be considered as expected behavior. Also, depending on how the exception is handled, the request metrics might not be tagged with the exception. This will be reconsidered in gh-23795. This commit prepares a transition to the new situation. Developers can now opt-in and set the handled exception as a request attribute. This well-known attribute will be later read by the metrics support and used for tagging the request metrics with the exception provided. This mechanism is automatically used by the error handling support in Spring Boot. Closes gh-24028
This commit is contained in:
@@ -2188,6 +2188,8 @@ By default, Spring MVC-related metrics are tagged with the following information
|
||||
To add to the default tags, provide one or more ``@Bean``s that implement `WebMvcTagsContributor`.
|
||||
To replace the default tags, provide a `@Bean` that implements `WebMvcTagsProvider`.
|
||||
|
||||
TIP: In some cases, exceptions handled in Web controllers are not recorded as request metrics tags.
|
||||
Applications can opt-in and record exceptions by <<spring-boot-features.adoc#boot-features-error-handling, setting handled exceptions as request parameters>>.
|
||||
|
||||
|
||||
[[production-ready-metrics-web-flux]]
|
||||
@@ -2222,7 +2224,8 @@ By default, WebFlux-related metrics are tagged with the following information:
|
||||
To add to the default tags, provide one or more ``@Bean``s that implement `WebFluxTagsContributor`.
|
||||
To replace the default tags, provide a `@Bean` that implements `WebFluxTagsProvider`.
|
||||
|
||||
|
||||
TIP: In some cases, exceptions handled in controllers and handler functions are not recorded as request metrics tags.
|
||||
Applications can opt-in and record exceptions by <<spring-boot-features.adoc#boot-features-webflux-error-handling, setting handled exceptions as request parameters>>.
|
||||
|
||||
[[production-ready-metrics-jersey-server]]
|
||||
==== Jersey Server Metrics
|
||||
|
||||
@@ -2566,7 +2566,13 @@ include::{include-springbootfeatures}/webapplications/servlet/MyControllerAdvice
|
||||
|
||||
In the preceding example, if `YourException` is thrown by a controller defined in the same package as `AcmeController`, a JSON representation of the `CustomErrorType` POJO is used instead of the `ErrorAttributes` representation.
|
||||
|
||||
In some cases, errors handled at the controller level are not recorded by the <<production-ready-features.adoc#production-ready-metrics-spring-mvc, metrics infrastructure>>.
|
||||
Applications can ensure that such exceptions are recorded with the request metrics by setting the handled exception as a request attribute:
|
||||
|
||||
[source,java,indent=0,subs="verbatim,quotes,attributes"]
|
||||
----
|
||||
include::{include-springbootfeatures}/webapplications/servlet/MyController.java[]
|
||||
----
|
||||
|
||||
[[boot-features-error-handling-custom-error-pages]]
|
||||
===== Custom Error Pages
|
||||
@@ -2823,6 +2829,14 @@ include::{include-springbootfeatures}/webapplications/webflux/CustomErrorWebExce
|
||||
|
||||
For a more complete picture, you can also subclass `DefaultErrorWebExceptionHandler` directly and override specific methods.
|
||||
|
||||
In some cases, errors handled at the controller or handler function level are not recorded by the <<production-ready-features.adoc#production-ready-metrics-web-flux, metrics infrastructure>>.
|
||||
Applications can ensure that such exceptions are recorded with the request metrics by setting the handled exception as a request attribute:
|
||||
|
||||
[source,java,indent=0,subs="verbatim,quotes,attributes"]
|
||||
----
|
||||
include::{include-springbootfeatures}/webapplications/webflux/ExceptionHandlingController.java[]
|
||||
----
|
||||
|
||||
|
||||
|
||||
[[boot-features-webflux-error-handling-custom-error-pages]]
|
||||
|
||||
Reference in New Issue
Block a user