From 9ad9abb90b8a3511c975f14291bf26cc1173577b Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Wed, 8 Jul 2026 08:30:21 -0400 Subject: [PATCH 1/4] MLE-29643 Configure OkHttp Logging with dedicated logger --- .../marklogic/client/impl/OkHttpServices.java | 9 ++- .../impl/okhttp/RedactingHttpLogger.java | 16 ++++- .../impl/okhttp/RedactingHttpLoggerTest.java | 65 ++++++++++++++++++- 3 files changed, 85 insertions(+), 5 deletions(-) diff --git a/marklogic-client-api/src/main/java/com/marklogic/client/impl/OkHttpServices.java b/marklogic-client-api/src/main/java/com/marklogic/client/impl/OkHttpServices.java index f3cf56ba9..256c906ea 100644 --- a/marklogic-client-api/src/main/java/com/marklogic/client/impl/OkHttpServices.java +++ b/marklogic-client-api/src/main/java/com/marklogic/client/impl/OkHttpServices.java @@ -92,8 +92,13 @@ public class OkHttpServices implements RESTServices { private static final String OKHTTP_LOGGINGINTERCEPTOR_LEVEL = "com.marklogic.client.okhttp.httplogginginterceptor.level"; /** - * Controls where OkHttp log output is written. Accepted values: {@code LOGGER} (SLF4J debug logger), - * {@code STDERR}, or leave unset for stdout. + * Controls where OkHttp log output is written. Accepted values: + * */ private static final String OKHTTP_LOGGINGINTERCEPTOR_OUTPUT = "com.marklogic.client.okhttp.httplogginginterceptor.output"; diff --git a/marklogic-client-api/src/main/java/com/marklogic/client/impl/okhttp/RedactingHttpLogger.java b/marklogic-client-api/src/main/java/com/marklogic/client/impl/okhttp/RedactingHttpLogger.java index 740d22fc3..83dd807cb 100644 --- a/marklogic-client-api/src/main/java/com/marklogic/client/impl/okhttp/RedactingHttpLogger.java +++ b/marklogic-client-api/src/main/java/com/marklogic/client/impl/okhttp/RedactingHttpLogger.java @@ -14,6 +14,11 @@ * and {@code x-auth-token} header values before writing each log message to * the configured output target (SLF4J logger, stderr, or stdout). * + *

When the output target is {@code LOGGER}, messages are written to the + * SLF4J logger category {@code com.marklogic.client.okhttp.network} at + * {@code INFO} level. Users can enable or disable this output without + * touching DEBUG logging for unrelated client internals. + * *

Security warning: Even with header redaction, * {@code BODY}-level logging writes full HTTP request and response bodies to * the log target. This may include MarkLogic document content and must never @@ -30,7 +35,14 @@ public class RedactingHttpLogger implements HttpLoggingInterceptor.Logger { Pattern.compile("(?i)(authorization|x-auth-token):.*"); static final String SENSITIVE_HEADER_REDACTION_REPLACEMENT = "$1: [REDACTED]"; - private static final Logger logger = LoggerFactory.getLogger(RedactingHttpLogger.class); + /** + * The SLF4J logger category written to when {@code output=LOGGER}. Configure this category at + * {@code INFO} level in your logging framework to enable network traffic logging; for example, + * in {@code logback.xml}: {@code }. + */ + static final String NETWORK_LOGGER_NAME = "com.marklogic.client.okhttp.network"; + + private static final Logger logger = LoggerFactory.getLogger(NETWORK_LOGGER_NAME); private final boolean useLogger; private final boolean useStdErr; @@ -44,7 +56,7 @@ public RedactingHttpLogger(boolean useLogger, boolean useStdErr) { public void log(String message) { String redacted = redactSensitiveHeaders(message); if (useLogger) { - logger.debug(redacted); + logger.info(redacted); } else if (useStdErr) { System.err.println(redacted); } else { diff --git a/marklogic-client-api/src/test/java/com/marklogic/client/impl/okhttp/RedactingHttpLoggerTest.java b/marklogic-client-api/src/test/java/com/marklogic/client/impl/okhttp/RedactingHttpLoggerTest.java index be72165a4..204ad8584 100644 --- a/marklogic-client-api/src/test/java/com/marklogic/client/impl/okhttp/RedactingHttpLoggerTest.java +++ b/marklogic-client-api/src/test/java/com/marklogic/client/impl/okhttp/RedactingHttpLoggerTest.java @@ -3,12 +3,18 @@ */ package com.marklogic.client.impl.okhttp; +import ch.qos.logback.classic.Level; +import ch.qos.logback.classic.spi.ILoggingEvent; +import ch.qos.logback.core.read.ListAppender; import org.junit.jupiter.api.Test; +import org.slf4j.LoggerFactory; import static org.junit.jupiter.api.Assertions.*; /** - * Unit tests for {@link RedactingHttpLogger#redactSensitiveHeaders(String)}. + * Unit tests for {@link RedactingHttpLogger}. + * Covers header redaction ({@link RedactingHttpLogger#redactSensitiveHeaders(String)}) + * and LOGGER-mode output category and level behaviour. * No MarkLogic instance or network connectivity is required. */ class RedactingHttpLoggerTest { @@ -88,4 +94,61 @@ void multiLineMessageRedactsOnlyAuthLines() { assertFalse(result.contains("dXNlcjpwYXNzd29yZA==")); assertTrue(result.contains("Content-Length: 42")); } + + @Test + void loggerModeWritesToNetworkLoggerCategoryAtInfoLevel() { + ch.qos.logback.classic.Logger networkLogger = + (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(RedactingHttpLogger.NETWORK_LOGGER_NAME); + Level originalLevel = networkLogger.getLevel(); + networkLogger.setLevel(Level.INFO); + + ListAppender appender = new ListAppender<>(); + appender.start(); + networkLogger.addAppender(appender); + + try { + new RedactingHttpLogger(true, false).log("GET http://localhost:8000/v1/documents HTTP/1.1"); + + assertEquals(1, appender.list.size(), "Expected exactly one log event"); + ILoggingEvent event = appender.list.get(0); + + assertEquals(RedactingHttpLogger.NETWORK_LOGGER_NAME, event.getLoggerName(), + "Log event must be published under " + RedactingHttpLogger.NETWORK_LOGGER_NAME); + assertEquals(Level.INFO, event.getLevel(), + "LOGGER-mode output must be emitted at INFO level"); + } finally { + appender.stop(); + networkLogger.detachAppender(appender); + networkLogger.setLevel(originalLevel); + } + } + + @Test + void loggerModeDoesNotRequireDebugOnImplPackage() { + ch.qos.logback.classic.Logger implLogger = + (ch.qos.logback.classic.Logger) LoggerFactory.getLogger("com.marklogic.client.impl.okhttp"); + Level originalImplLevel = implLogger.getLevel(); + implLogger.setLevel(Level.WARN); + + ch.qos.logback.classic.Logger networkLogger = + (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(RedactingHttpLogger.NETWORK_LOGGER_NAME); + Level originalNetworkLevel = networkLogger.getLevel(); + networkLogger.setLevel(Level.INFO); + + ListAppender appender = new ListAppender<>(); + appender.start(); + networkLogger.addAppender(appender); + + try { + new RedactingHttpLogger(true, false).log("GET http://localhost:8000/v1/documents HTTP/1.1"); + + assertEquals(1, appender.list.size(), + "LOGGER-mode output must be visible without enabling DEBUG on com.marklogic.client.impl.*"); + } finally { + appender.stop(); + networkLogger.detachAppender(appender); + networkLogger.setLevel(originalNetworkLevel); + implLogger.setLevel(originalImplLevel); + } + } } From 657a0b977a5bf1af1b1aea92aeb4c17a45cbee27 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Wed, 8 Jul 2026 08:41:32 -0400 Subject: [PATCH 2/4] MLE-29643 Update test Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .../marklogic/client/impl/okhttp/RedactingHttpLoggerTest.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/marklogic-client-api/src/test/java/com/marklogic/client/impl/okhttp/RedactingHttpLoggerTest.java b/marklogic-client-api/src/test/java/com/marklogic/client/impl/okhttp/RedactingHttpLoggerTest.java index 204ad8584..f00bf2f22 100644 --- a/marklogic-client-api/src/test/java/com/marklogic/client/impl/okhttp/RedactingHttpLoggerTest.java +++ b/marklogic-client-api/src/test/java/com/marklogic/client/impl/okhttp/RedactingHttpLoggerTest.java @@ -100,6 +100,8 @@ void loggerModeWritesToNetworkLoggerCategoryAtInfoLevel() { ch.qos.logback.classic.Logger networkLogger = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(RedactingHttpLogger.NETWORK_LOGGER_NAME); Level originalLevel = networkLogger.getLevel(); + boolean originalAdditive = networkLogger.isAdditive(); + networkLogger.setAdditive(false); networkLogger.setLevel(Level.INFO); ListAppender appender = new ListAppender<>(); @@ -120,6 +122,7 @@ void loggerModeWritesToNetworkLoggerCategoryAtInfoLevel() { appender.stop(); networkLogger.detachAppender(appender); networkLogger.setLevel(originalLevel); + networkLogger.setAdditive(originalAdditive); } } From e55f15a6465335d7b5060716c2a40723ed5baa36 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Wed, 8 Jul 2026 08:41:49 -0400 Subject: [PATCH 3/4] MLE-29643 Update test Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .../marklogic/client/impl/okhttp/RedactingHttpLoggerTest.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/marklogic-client-api/src/test/java/com/marklogic/client/impl/okhttp/RedactingHttpLoggerTest.java b/marklogic-client-api/src/test/java/com/marklogic/client/impl/okhttp/RedactingHttpLoggerTest.java index f00bf2f22..4048f709c 100644 --- a/marklogic-client-api/src/test/java/com/marklogic/client/impl/okhttp/RedactingHttpLoggerTest.java +++ b/marklogic-client-api/src/test/java/com/marklogic/client/impl/okhttp/RedactingHttpLoggerTest.java @@ -136,6 +136,8 @@ void loggerModeDoesNotRequireDebugOnImplPackage() { ch.qos.logback.classic.Logger networkLogger = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(RedactingHttpLogger.NETWORK_LOGGER_NAME); Level originalNetworkLevel = networkLogger.getLevel(); + boolean originalNetworkAdditive = networkLogger.isAdditive(); + networkLogger.setAdditive(false); networkLogger.setLevel(Level.INFO); ListAppender appender = new ListAppender<>(); @@ -151,6 +153,7 @@ void loggerModeDoesNotRequireDebugOnImplPackage() { appender.stop(); networkLogger.detachAppender(appender); networkLogger.setLevel(originalNetworkLevel); + networkLogger.setAdditive(originalNetworkAdditive); implLogger.setLevel(originalImplLevel); } } From f14e5d4cb27a23c43b02b801f5f559925ef76cd7 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Wed, 8 Jul 2026 11:13:14 -0400 Subject: [PATCH 4/4] MLE-29643 Suggested Changes --- .../marklogic/client/impl/OkHttpServices.java | 38 ++------ .../impl/okhttp/RedactingHttpLogger.java | 12 +-- .../marklogic/client/util/LoggingUtil.java | 93 +++++++++++++++++++ .../impl/okhttp/RedactingHttpLoggerTest.java | 9 +- 4 files changed, 109 insertions(+), 43 deletions(-) create mode 100644 marklogic-client-api/src/main/java/com/marklogic/client/util/LoggingUtil.java diff --git a/marklogic-client-api/src/main/java/com/marklogic/client/impl/OkHttpServices.java b/marklogic-client-api/src/main/java/com/marklogic/client/impl/OkHttpServices.java index 256c906ea..059a97aca 100644 --- a/marklogic-client-api/src/main/java/com/marklogic/client/impl/OkHttpServices.java +++ b/marklogic-client-api/src/main/java/com/marklogic/client/impl/OkHttpServices.java @@ -30,6 +30,7 @@ import com.marklogic.client.query.QueryManager.QueryView; import com.marklogic.client.semantics.*; import com.marklogic.client.util.EditableNamespaceContext; +import com.marklogic.client.util.LoggingUtil; import com.marklogic.client.util.RequestLogger; import com.marklogic.client.util.RequestParameters; import jakarta.mail.BodyPart; @@ -79,29 +80,6 @@ public class OkHttpServices implements RESTServices { static final private Logger logger = LoggerFactory.getLogger(OkHttpServices.class); - /** - * Controls the verbosity of OkHttp HTTP traffic logging. Accepted values: {@code NONE}, {@code BASIC}, - * {@code HEADERS}, {@code BODY}. - * - *

Security warning: {@code HEADERS} and {@code BODY} levels log HTTP request and response - * headers and/or bodies, which may contain MarkLogic credentials, OAuth/SAML tokens, or sensitive document - * content. These levels must never be enabled in production environments. {@code Authorization} and - * {@code x-auth-token} header values are automatically redacted from log output, but body content (including - * MarkLogic document data) is not redacted. - */ - private static final String OKHTTP_LOGGINGINTERCEPTOR_LEVEL = "com.marklogic.client.okhttp.httplogginginterceptor.level"; - - /** - * Controls where OkHttp log output is written. Accepted values: - *

- */ - private static final String OKHTTP_LOGGINGINTERCEPTOR_OUTPUT = "com.marklogic.client.okhttp.httplogginginterceptor.output"; - private static final String DOCUMENT_URI_PREFIX = "/documents?uri="; static final private int DELAY_FLOOR = 125; @@ -226,7 +204,7 @@ private OkHttpClient connect(ConnectionConfig config) { OkHttpClient.Builder clientBuilder = OkHttpUtil.newOkHttpClientBuilder(config.host, config.securityContext, config.clientConfigurators); Properties props = System.getProperties(); - if (props.containsKey(OKHTTP_LOGGINGINTERCEPTOR_LEVEL)) { + if (props.containsKey(LoggingUtil.OKHTTP_NETWORK_LEVEL)) { configureOkHttpLogging(clientBuilder, props); } this.configureDelayAndRetry(props); @@ -244,17 +222,17 @@ private OkHttpClient connect(ConnectionConfig config) { * never be enabled in production environments. */ private void configureOkHttpLogging(OkHttpClient.Builder clientBuilder, Properties props) { - final boolean useLogger = "LOGGER".equalsIgnoreCase(props.getProperty(OKHTTP_LOGGINGINTERCEPTOR_OUTPUT)); - final boolean useStdErr = "STDERR".equalsIgnoreCase(props.getProperty(OKHTTP_LOGGINGINTERCEPTOR_OUTPUT)); + final boolean useLogger = "LOGGER".equalsIgnoreCase(props.getProperty(LoggingUtil.OKHTTP_NETWORK_OUTPUT)); + final boolean useStdErr = "STDERR".equalsIgnoreCase(props.getProperty(LoggingUtil.OKHTTP_NETWORK_OUTPUT)); HttpLoggingInterceptor networkInterceptor = new HttpLoggingInterceptor(new RedactingHttpLogger(useLogger, useStdErr)); - if ("BASIC".equalsIgnoreCase(props.getProperty(OKHTTP_LOGGINGINTERCEPTOR_LEVEL))) { + if ("BASIC".equalsIgnoreCase(props.getProperty(LoggingUtil.OKHTTP_NETWORK_LEVEL))) { networkInterceptor = networkInterceptor.setLevel(HttpLoggingInterceptor.Level.BASIC); - } else if ("BODY".equalsIgnoreCase(props.getProperty(OKHTTP_LOGGINGINTERCEPTOR_LEVEL))) { + } else if ("BODY".equalsIgnoreCase(props.getProperty(LoggingUtil.OKHTTP_NETWORK_LEVEL))) { networkInterceptor = networkInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY); - } else if ("HEADERS".equalsIgnoreCase(props.getProperty(OKHTTP_LOGGINGINTERCEPTOR_LEVEL))) { + } else if ("HEADERS".equalsIgnoreCase(props.getProperty(LoggingUtil.OKHTTP_NETWORK_LEVEL))) { networkInterceptor = networkInterceptor.setLevel(HttpLoggingInterceptor.Level.HEADERS); - } else if ("NONE".equalsIgnoreCase(props.getProperty(OKHTTP_LOGGINGINTERCEPTOR_LEVEL))) { + } else if ("NONE".equalsIgnoreCase(props.getProperty(LoggingUtil.OKHTTP_NETWORK_LEVEL))) { networkInterceptor = networkInterceptor.setLevel(HttpLoggingInterceptor.Level.NONE); } clientBuilder.addNetworkInterceptor(networkInterceptor); diff --git a/marklogic-client-api/src/main/java/com/marklogic/client/impl/okhttp/RedactingHttpLogger.java b/marklogic-client-api/src/main/java/com/marklogic/client/impl/okhttp/RedactingHttpLogger.java index 83dd807cb..ed98dfe58 100644 --- a/marklogic-client-api/src/main/java/com/marklogic/client/impl/okhttp/RedactingHttpLogger.java +++ b/marklogic-client-api/src/main/java/com/marklogic/client/impl/okhttp/RedactingHttpLogger.java @@ -3,6 +3,7 @@ */ package com.marklogic.client.impl.okhttp; +import com.marklogic.client.util.LoggingUtil; import okhttp3.logging.HttpLoggingInterceptor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -15,7 +16,7 @@ * the configured output target (SLF4J logger, stderr, or stdout). * *

When the output target is {@code LOGGER}, messages are written to the - * SLF4J logger category {@code com.marklogic.client.okhttp.network} at + * SLF4J logger category {@link com.marklogic.client.util.LoggingUtil#OKHTTP_NETWORK_LOGGER} at * {@code INFO} level. Users can enable or disable this output without * touching DEBUG logging for unrelated client internals. * @@ -35,14 +36,7 @@ public class RedactingHttpLogger implements HttpLoggingInterceptor.Logger { Pattern.compile("(?i)(authorization|x-auth-token):.*"); static final String SENSITIVE_HEADER_REDACTION_REPLACEMENT = "$1: [REDACTED]"; - /** - * The SLF4J logger category written to when {@code output=LOGGER}. Configure this category at - * {@code INFO} level in your logging framework to enable network traffic logging; for example, - * in {@code logback.xml}: {@code }. - */ - static final String NETWORK_LOGGER_NAME = "com.marklogic.client.okhttp.network"; - - private static final Logger logger = LoggerFactory.getLogger(NETWORK_LOGGER_NAME); + private static final Logger logger = LoggerFactory.getLogger(LoggingUtil.OKHTTP_NETWORK_LOGGER); private final boolean useLogger; private final boolean useStdErr; diff --git a/marklogic-client-api/src/main/java/com/marklogic/client/util/LoggingUtil.java b/marklogic-client-api/src/main/java/com/marklogic/client/util/LoggingUtil.java new file mode 100644 index 000000000..63b58f479 --- /dev/null +++ b/marklogic-client-api/src/main/java/com/marklogic/client/util/LoggingUtil.java @@ -0,0 +1,93 @@ +/* + * Copyright (c) 2010-2026 Progress Software Corporation and/or its subsidiaries or affiliates. All Rights Reserved. + */ +package com.marklogic.client.util; + +/** + * Provides public constants for configuring MarkLogic Java Client logging behaviour. + * + *

OkHttp Network Logging

+ * + *

The Java Client uses OkHttp for all HTTP communication with MarkLogic. Optional network + * traffic logging is controlled by two Java system properties: + * + *

+ * + *

When the output is set to {@code LOGGER}, log lines are written to the SLF4J logger + * category {@link #OKHTTP_NETWORK_LOGGER} at {@code INFO} level. Configure this category + * in your logging framework to enable network diagnostics without enabling debug logging + * for unrelated client internals. For example, in {@code logback.xml}: + * + *

{@code
+ * 
+ * }
+ * + *

Or in a Spring Boot {@code application.properties} file: + * + *

{@code
+ * logging.level.marklogic.okhttp.network=INFO
+ * }
+ * + *

Security warning: {@code Authorization} and {@code x-auth-token} header + * values are automatically redacted from all log output. However, {@code HEADERS} and + * {@code BODY} levels may expose other sensitive data including MarkLogic document content. + * Never enable {@code HEADERS} or {@code BODY} in a production environment. + * + * @since 8.2.0 + */ +public final class LoggingUtil { + + /** + * Name of the Java system property that controls the verbosity of OkHttp network logging. + * Value: {@code "marklogic.okhttp.network.level"} + * + *

Accepted values (case-insensitive): {@code BASIC}, {@code HEADERS}, {@code BODY}, + * {@code NONE}. Setting this property to any recognised value activates the network + * logging interceptor. + * + *

Security warning: {@code HEADERS} and {@code BODY} levels log HTTP + * request and response headers and/or bodies, which may contain MarkLogic credentials, + * OAuth/SAML tokens, or sensitive document content. These levels must never be + * enabled in production environments. {@code Authorization} and {@code x-auth-token} + * header values are automatically redacted, but body content is not. + */ + public static final String OKHTTP_NETWORK_LEVEL = "marklogic.okhttp.network.level"; + + /** + * Name of the Java system property that controls where OkHttp network log lines are written. + * Value: {@code "marklogic.okhttp.network.output"} + * + *

Accepted values (case-insensitive): + *

+ */ + public static final String OKHTTP_NETWORK_OUTPUT = "marklogic.okhttp.network.output"; + + /** + * The SLF4J logger category used for OkHttp network traffic when + * {@link #OKHTTP_NETWORK_OUTPUT} is set to {@code LOGGER}. + * Value: {@code "marklogic.okhttp.network"} + * + *

Configure this category at {@code INFO} level in your logging framework to enable + * network traffic logging. Example {@code logback.xml} configuration: + *

{@code
+	 * 
+	 * }
+ * + *

Example Spring Boot {@code application.properties}: + *

{@code
+	 * logging.level.marklogic.okhttp.network=INFO
+	 * }
+ */ + public static final String OKHTTP_NETWORK_LOGGER = "marklogic.okhttp.network"; + + private LoggingUtil() { + } +} diff --git a/marklogic-client-api/src/test/java/com/marklogic/client/impl/okhttp/RedactingHttpLoggerTest.java b/marklogic-client-api/src/test/java/com/marklogic/client/impl/okhttp/RedactingHttpLoggerTest.java index 4048f709c..3872ff60b 100644 --- a/marklogic-client-api/src/test/java/com/marklogic/client/impl/okhttp/RedactingHttpLoggerTest.java +++ b/marklogic-client-api/src/test/java/com/marklogic/client/impl/okhttp/RedactingHttpLoggerTest.java @@ -6,6 +6,7 @@ import ch.qos.logback.classic.Level; import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.core.read.ListAppender; +import com.marklogic.client.util.LoggingUtil; import org.junit.jupiter.api.Test; import org.slf4j.LoggerFactory; @@ -98,7 +99,7 @@ void multiLineMessageRedactsOnlyAuthLines() { @Test void loggerModeWritesToNetworkLoggerCategoryAtInfoLevel() { ch.qos.logback.classic.Logger networkLogger = - (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(RedactingHttpLogger.NETWORK_LOGGER_NAME); + (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(LoggingUtil.OKHTTP_NETWORK_LOGGER); Level originalLevel = networkLogger.getLevel(); boolean originalAdditive = networkLogger.isAdditive(); networkLogger.setAdditive(false); @@ -114,8 +115,8 @@ void loggerModeWritesToNetworkLoggerCategoryAtInfoLevel() { assertEquals(1, appender.list.size(), "Expected exactly one log event"); ILoggingEvent event = appender.list.get(0); - assertEquals(RedactingHttpLogger.NETWORK_LOGGER_NAME, event.getLoggerName(), - "Log event must be published under " + RedactingHttpLogger.NETWORK_LOGGER_NAME); + assertEquals(LoggingUtil.OKHTTP_NETWORK_LOGGER, event.getLoggerName(), + "Log event must be published under " + LoggingUtil.OKHTTP_NETWORK_LOGGER); assertEquals(Level.INFO, event.getLevel(), "LOGGER-mode output must be emitted at INFO level"); } finally { @@ -134,7 +135,7 @@ void loggerModeDoesNotRequireDebugOnImplPackage() { implLogger.setLevel(Level.WARN); ch.qos.logback.classic.Logger networkLogger = - (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(RedactingHttpLogger.NETWORK_LOGGER_NAME); + (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(LoggingUtil.OKHTTP_NETWORK_LOGGER); Level originalNetworkLevel = networkLogger.getLevel(); boolean originalNetworkAdditive = networkLogger.isAdditive(); networkLogger.setAdditive(false);