From 3c937915fa84624c52d5fcd9e56063e5cd4cf26a Mon Sep 17 00:00:00 2001 From: Georgios Andrianakis Date: Fri, 20 Oct 2023 13:15:53 +0300 Subject: [PATCH] Allow for setting logging body limit programmatically Same as idea as #36518 (cherry picked from commit cd750ba2452713b02d3654261ba7c11a47aa74e7) --- .../client/reactive/QuarkusRestClientBuilder.java | 6 ++++++ .../runtime/QuarkusRestClientBuilderImpl.java | 6 ++++++ .../reactive/runtime/RestClientBuilderImpl.java | 14 ++++++++++++-- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/extensions/resteasy-reactive/rest-client-reactive/runtime/src/main/java/io/quarkus/rest/client/reactive/QuarkusRestClientBuilder.java b/extensions/resteasy-reactive/rest-client-reactive/runtime/src/main/java/io/quarkus/rest/client/reactive/QuarkusRestClientBuilder.java index db7ca2d7525a7..7e41aec082120 100644 --- a/extensions/resteasy-reactive/rest-client-reactive/runtime/src/main/java/io/quarkus/rest/client/reactive/QuarkusRestClientBuilder.java +++ b/extensions/resteasy-reactive/rest-client-reactive/runtime/src/main/java/io/quarkus/rest/client/reactive/QuarkusRestClientBuilder.java @@ -268,6 +268,12 @@ static QuarkusRestClientBuilder newBuilder() { */ QuarkusRestClientBuilder loggingScope(LoggingScope loggingScope); + /** + * How many characters of the body should be logged. Message body can be large and can easily pollute the logs. + * + */ + QuarkusRestClientBuilder loggingBodyLimit(Integer limit); + /** * Based on the configured QuarkusRestClientBuilder, creates a new instance of the given REST interface to invoke API calls * against. diff --git a/extensions/resteasy-reactive/rest-client-reactive/runtime/src/main/java/io/quarkus/rest/client/reactive/runtime/QuarkusRestClientBuilderImpl.java b/extensions/resteasy-reactive/rest-client-reactive/runtime/src/main/java/io/quarkus/rest/client/reactive/runtime/QuarkusRestClientBuilderImpl.java index a47c4fba20124..0a9c481e7a113 100644 --- a/extensions/resteasy-reactive/rest-client-reactive/runtime/src/main/java/io/quarkus/rest/client/reactive/runtime/QuarkusRestClientBuilderImpl.java +++ b/extensions/resteasy-reactive/rest-client-reactive/runtime/src/main/java/io/quarkus/rest/client/reactive/runtime/QuarkusRestClientBuilderImpl.java @@ -231,6 +231,12 @@ public QuarkusRestClientBuilder loggingScope(LoggingScope loggingScope) { return this; } + @Override + public QuarkusRestClientBuilder loggingBodyLimit(Integer limit) { + proxy.loggingBodyLimit(limit); + return this; + } + @Override public T build(Class clazz) throws IllegalStateException, RestClientDefinitionException { return proxy.build(clazz); diff --git a/extensions/resteasy-reactive/rest-client-reactive/runtime/src/main/java/io/quarkus/rest/client/reactive/runtime/RestClientBuilderImpl.java b/extensions/resteasy-reactive/rest-client-reactive/runtime/src/main/java/io/quarkus/rest/client/reactive/runtime/RestClientBuilderImpl.java index a6e1c152ec0a5..657849440d32e 100644 --- a/extensions/resteasy-reactive/rest-client-reactive/runtime/src/main/java/io/quarkus/rest/client/reactive/runtime/RestClientBuilderImpl.java +++ b/extensions/resteasy-reactive/rest-client-reactive/runtime/src/main/java/io/quarkus/rest/client/reactive/runtime/RestClientBuilderImpl.java @@ -71,6 +71,7 @@ public class RestClientBuilderImpl implements RestClientBuilder { private ClientLogger clientLogger; private LoggingScope loggingScope; + private Integer loggingBodyLimit; @Override public RestClientBuilderImpl baseUrl(URL url) { @@ -173,6 +174,11 @@ public RestClientBuilderImpl loggingScope(LoggingScope loggingScope) { return this; } + public RestClientBuilderImpl loggingBodyLimit(Integer limit) { + this.loggingBodyLimit = limit; + return this; + } + @Override public RestClientBuilderImpl executorService(ExecutorService executor) { throw new IllegalArgumentException("Specifying executor service is not supported. " + @@ -346,9 +352,12 @@ public T build(Class aClass) throws IllegalStateException, RestClientDefi : LoggingScope.NONE; } - Integer loggingBodySize = logging != null ? logging.bodyLimit : 100; + Integer effectiveLoggingBodyLimit = loggingBodyLimit; // if a limit was specified programmatically, it takes precedence + if (effectiveLoggingBodyLimit == null) { + effectiveLoggingBodyLimit = logging != null ? logging.bodyLimit : 100; + } clientBuilder.loggingScope(effectiveLoggingScope); - clientBuilder.loggingBodySize(loggingBodySize); + clientBuilder.loggingBodySize(effectiveLoggingBodyLimit); if (clientLogger != null) { clientBuilder.clientLogger(clientLogger); } else { @@ -438,4 +447,5 @@ private MultiQueryParamMode toMultiQueryParamMode(QueryParamStyle queryParamStyl } return null; } + }