From c41df923f2ec31c635ad9c4dd71d68f23ff5fbd4 Mon Sep 17 00:00:00 2001 From: Ceki Gulcu Date: Fri, 6 Nov 2015 17:43:14 +0100 Subject: [PATCH] fixing SLF4J-337 --- .../java/org/slf4j/bridge/SLF4JBridgeHandler.java | 8 +++++++- .../org/slf4j/bridge/SLF4JBridgeHandlerTest.java | 13 +++++++++++++ slf4j-site/src/site/pages/news.html | 11 +++++++++-- 3 files changed, 29 insertions(+), 3 deletions(-) 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 @@

, 2015 - Release of SLF4J 1.7.13

-

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.