diff --git a/src/main/java/net/snowflake/client/log/JDK14Logger.java b/src/main/java/net/snowflake/client/log/JDK14Logger.java index 5e96cd820..7c0a98dc6 100644 --- a/src/main/java/net/snowflake/client/log/JDK14Logger.java +++ b/src/main/java/net/snowflake/client/log/JDK14Logger.java @@ -134,7 +134,12 @@ private void logInternal(Level level, String msg, boolean masked) { private void logInternal(Level level, String msg, Object... arguments) { if (jdkLogger.isLoggable(level)) { String[] source = findSourceInStack(); - String message = MessageFormat.format(refactorString(msg), evaluateLambdaArgs(arguments)); + String message = ""; + try { + message = MessageFormat.format(refactorString(msg), evaluateLambdaArgs(arguments)); + } catch (IllegalArgumentException e) { + message = "Unable to format msg: " + msg; + } jdkLogger.logp(level, source[0], source[1], SecretDetector.maskSecrets(message)); } } diff --git a/src/test/java/net/snowflake/client/log/JDK14LoggerWithClientLatestIT.java b/src/test/java/net/snowflake/client/log/JDK14LoggerWithClientLatestIT.java index 399c8da83..ebc8f7bcf 100644 --- a/src/test/java/net/snowflake/client/log/JDK14LoggerWithClientLatestIT.java +++ b/src/test/java/net/snowflake/client/log/JDK14LoggerWithClientLatestIT.java @@ -12,6 +12,7 @@ import java.sql.SQLException; import java.util.HashSet; import java.util.Properties; +import java.util.logging.Level; import net.snowflake.client.AbstractDriverIT; import org.apache.commons.io.FileUtils; import org.junit.Test; @@ -70,4 +71,20 @@ public void testJDK14LoggingWithClientConfigPermissionError() throws IOException Files.delete(configFilePath); directory.delete(); } + + @Test + public void testJDK14LoggerWithBracesInMessage() { + JDK14Logger logger = new JDK14Logger(JDK14LoggerWithClientLatestIT.class.getName()); + JDK14Logger.setLevel(Level.FINE); + logger.debug("Returning column: 12: a: Group b) Hi {Hello World War} cant wait"); + JDK14Logger.setLevel(Level.OFF); + } + + @Test + public void testJDK14LoggerWithQuotesInMessage() { + JDK14Logger logger = new JDK14Logger(JDK14LoggerWithClientLatestIT.class.getName()); + JDK14Logger.setLevel(Level.FINE); + logger.debug("Returning column: 12: a: Group b) Hi {Hello 'World' War} cant wait"); + JDK14Logger.setLevel(Level.OFF); + } }