diff --git a/jul-to-slf4j/src/main/java/org/slf4j/bridge/SLF4JBridgeHandler.java b/jul-to-slf4j/src/main/java/org/slf4j/bridge/SLF4JBridgeHandler.java index d30fe7b7..8e125cf2 100755 --- a/jul-to-slf4j/src/main/java/org/slf4j/bridge/SLF4JBridgeHandler.java +++ b/jul-to-slf4j/src/main/java/org/slf4j/bridge/SLF4JBridgeHandler.java @@ -261,7 +261,13 @@ public class SLF4JBridgeHandler extends Handler { // avoid formatting when there are no or 0 parameters. see also // http://jira.qos.ch/browse/SLF4J-203 if (params != null && params.length > 0) { - message = MessageFormat.format(message, params); + try { + message = MessageFormat.format(message, params); + } catch (IllegalArgumentException e) { + // default to the same behavior as in java.util.logging.Formatter.formatMessage(LogRecord) + // see also http://jira.qos.ch/browse/SLF4J-337 + return message; + } } return message; } diff --git a/jul-to-slf4j/src/test/java/org/slf4j/bridge/SLF4JBridgeHandlerTest.java b/jul-to-slf4j/src/test/java/org/slf4j/bridge/SLF4JBridgeHandlerTest.java index 7f799008..1c7c46a2 100755 --- a/jul-to-slf4j/src/test/java/org/slf4j/bridge/SLF4JBridgeHandlerTest.java +++ b/jul-to-slf4j/src/test/java/org/slf4j/bridge/SLF4JBridgeHandlerTest.java @@ -178,6 +178,19 @@ public class SLF4JBridgeHandlerTest { assertEquals(msg, le.getMessage()); } + // See http://jira.qos.ch/browse/SLF4J-337 + + @Test + public void illFormattedInputShouldBeReturnedAsIs() { + SLF4JBridgeHandler.install(); + String msg = "foo {18=bad} {0}"; + + julLogger.log(Level.INFO, msg, "ignored parameter due to IllegalArgumentException"); + assertEquals(1, listAppender.list.size()); + LoggingEvent le = (LoggingEvent) listAppender.list.get(0); + assertEquals(msg, le.getMessage()); + } + void assertLevel(int index, org.apache.log4j.Level expectedLevel) { LoggingEvent le = (LoggingEvent) listAppender.list.get(index); assertEquals(expectedLevel, le.getLevel()); diff --git a/slf4j-site/src/site/pages/news.html b/slf4j-site/src/site/pages/news.html index f2f00b35..88d12eb4 100755 --- a/slf4j-site/src/site/pages/news.html +++ b/slf4j-site/src/site/pages/news.html @@ -31,12 +31,19 @@
Fixed issue with BasicMDCAdapter leaking MDC information to
- non-child threads. This problem was reported by Lukasz Cwik in Fixed issue with BasicMDCAdapter leaking MDC
+ information to non-child threads. This problem was reported by
+ Lukasz Cwik in SLF4J-316 who also
provided the relavant pull request.
More robust handling of ill-formatted input strings by + SLF4JBridgeHandler. This issue was reported in SLF4J-337 by Rodolfo + Udo Labsch. +
+House cleaning of our project's Maven pom.xml files, an initiative undertaken by Jeremy Landis.