diff options
author | gjoranv <gv@verizonmedia.com> | 2019-11-11 15:59:50 +0100 |
---|---|---|
committer | gjoranv <gv@verizonmedia.com> | 2019-11-11 15:59:50 +0100 |
commit | 9e8172e36bc99259f8b17710b25456b25c43b617 (patch) | |
tree | cc4e622524432ba907aabfa1ffe2b69675645fc7 /jaxrs_client_utils | |
parent | eef849ac5d308b9e910fc4f679a9360acf459239 (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.java | 26 |
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(); |