aboutsummaryrefslogtreecommitdiffstats
path: root/jaxrs_client_utils
diff options
context:
space:
mode:
authorgjoranv <gv@verizonmedia.com>2019-11-11 15:59:50 +0100
committergjoranv <gv@verizonmedia.com>2019-11-11 15:59:50 +0100
commit9e8172e36bc99259f8b17710b25456b25c43b617 (patch)
treecc4e622524432ba907aabfa1ffe2b69675645fc7 /jaxrs_client_utils
parenteef849ac5d308b9e910fc4f679a9360acf459239 (diff)
Filter out unwanted log messages from Jersey client.
Diffstat (limited to 'jaxrs_client_utils')
-rw-r--r--jaxrs_client_utils/src/main/java/ai/vespa/util/http/VespaClientBuilderFactory.java26
1 files changed, 26 insertions, 0 deletions
diff --git a/jaxrs_client_utils/src/main/java/ai/vespa/util/http/VespaClientBuilderFactory.java b/jaxrs_client_utils/src/main/java/ai/vespa/util/http/VespaClientBuilderFactory.java
index d55128069c4..c242f4c6f2f 100644
--- a/jaxrs_client_utils/src/main/java/ai/vespa/util/http/VespaClientBuilderFactory.java
+++ b/jaxrs_client_utils/src/main/java/ai/vespa/util/http/VespaClientBuilderFactory.java
@@ -4,15 +4,21 @@ package ai.vespa.util.http;
import com.yahoo.security.tls.MixedMode;
import com.yahoo.security.tls.TlsContext;
import com.yahoo.security.tls.TransportSecurityUtils;
+import org.glassfish.jersey.client.internal.HttpUrlConnector;
+import org.glassfish.jersey.process.internal.ExecutorProviders;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.ClientRequestContext;
import javax.ws.rs.client.ClientRequestFilter;
import javax.ws.rs.core.UriBuilder;
import java.net.URI;
+import java.util.Optional;
+import java.util.logging.Filter;
import java.util.logging.Level;
import java.util.logging.Logger;
+import static java.util.logging.Level.CONFIG;
+
/**
* Factory for JAX-RS http client builder for internal Vespa communications over http/https.
*
@@ -26,6 +32,26 @@ public class VespaClientBuilderFactory implements AutoCloseable {
private static final Logger log = Logger.getLogger(VespaClientBuilderFactory.class.getName());
+ static {
+ // CONFIG log message are logged repeatedly from these classes.
+ disableConfigLogging(HttpUrlConnector.class);
+ disableConfigLogging(ExecutorProviders.class);
+ }
+
+ // This method will hook a filter into the Jersey logger removing unwanted messages.
+ private static void disableConfigLogging(Class<?> klass) {
+ @SuppressWarnings("LoggerInitializedWithForeignClass")
+ Logger logger = Logger.getLogger(klass.getName());
+ Optional<Filter> currentFilter = Optional.ofNullable(logger.getFilter());
+ Filter filter = logRecord ->
+ !logRecord.getMessage().startsWith("Restricted headers are not enabled")
+ && !logRecord.getMessage().startsWith("Selected ExecutorServiceProvider implementation")
+ && !logRecord.getLevel().equals(CONFIG)
+ && currentFilter.map(f -> f.isLoggable(logRecord)).orElse(true); // Honour existing filter if exists
+ logger.setFilter(filter);
+ }
+
+
private final TlsContext tlsContext = TransportSecurityUtils.createTlsContext().orElse(null);
private final MixedMode mixedMode = TransportSecurityUtils.getInsecureMixedMode();