SLING-3421 - logback initialization does not initialize correct loggers if there's a single false one

Incase of any exception with pattern fallback to default pattern

git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1692244 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/sling/commons/log/logback/internal/LogConfig.java b/src/main/java/org/apache/sling/commons/log/logback/internal/LogConfig.java
index e615db6..909c963 100644
--- a/src/main/java/org/apache/sling/commons/log/logback/internal/LogConfig.java
+++ b/src/main/java/org/apache/sling/commons/log/logback/internal/LogConfig.java
@@ -27,12 +27,16 @@
 import ch.qos.logback.classic.Level;
 import ch.qos.logback.classic.LoggerContext;
 import ch.qos.logback.classic.PatternLayout;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class LogConfig {
     private static final String[] LEGACY_MARKERS = {
         "{0}", "{1}", "{2}", "{3}", "{4}", "{5}"
     };
 
+    private static final Logger log = LoggerFactory.getLogger(LogConfig.class);
+
     private final String configPid;
 
     private final Set<String> categories;
@@ -128,8 +132,13 @@
             // Default {0,date,dd.MM.yyyy HH:mm:ss.SSS} *{4}* [{2}] {3} {5}
             // Convert patterns to %d{dd.MM.yyyy HH:mm:ss.SSS} *%level*
             // [%thread] %logger %msg%n
-            logBackPattern = MessageFormat.format(logBackPattern, "zero", "%marker", "%thread", "%logger", "%level",
-                "%message") + "%n";
+            try {
+                logBackPattern = MessageFormat.format(logBackPattern, "zero", "%marker", "%thread", "%logger", "%level",
+                        "%message") + "%n";
+            } catch (IllegalArgumentException e) {
+                log.warn("Invalid message format provided [{}]. Would use the default pattern",logBackPattern, e);
+                logBackPattern = LogConfigManager.LOG_PATTERN_DEFAULT;
+            }
         }
 
         PatternLayout pl = new PatternLayout();