You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by gg...@apache.org on 2022/01/20 13:24:43 UTC

[logging-log4j2] 02/04: Log4j 1.2 bridge should allow property and XML attributes to start with either an upper-case or lower-case letter.

This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit 6db741b8868b845bf5ab63869284639c6f1ba6e1
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Thu Jan 20 08:12:53 2022 -0500

    Log4j 1.2 bridge should allow property and XML attributes to start with
    either an upper-case or lower-case letter.
    
    For example, "target" vs. "Target" in
    "log4j.appender.Console.Target=System.err"
---
 .../org/apache/log4j/builders/AbstractBuilder.java | 136 ++++++++++++---------
 .../builders/appender/AsyncAppenderBuilder.java    |   2 +-
 .../builders/appender/ConsoleAppenderBuilder.java  |  14 +--
 .../appender/DailyRollingFileAppenderBuilder.java  |   2 +-
 .../builders/appender/FileAppenderBuilder.java     |   2 +-
 .../builders/appender/RewriteAppenderBuilder.java  |   2 +-
 .../appender/RollingFileAppenderBuilder.java       |   2 +-
 .../builders/appender/SyslogAppenderBuilder.java   |   5 +-
 .../builders/filter/LevelMatchFilterBuilder.java   |   2 +-
 .../builders/filter/LevelRangeFilterBuilder.java   |   5 +-
 .../builders/filter/StringMatchFilterBuilder.java  |   2 +-
 .../log4j/builders/layout/HtmlLayoutBuilder.java   |  16 +--
 .../log4j/builders/layout/TTCCLayoutBuilder.java   |   6 +-
 .../log4j/builders/layout/XmlLayoutBuilder.java    |   4 -
 14 files changed, 104 insertions(+), 96 deletions(-)

diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/AbstractBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/AbstractBuilder.java
index cdf7f1b..ad7db99 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/AbstractBuilder.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/AbstractBuilder.java
@@ -22,7 +22,6 @@ import static org.apache.log4j.xml.XmlConfiguration.VALUE_ATTR;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
-import java.util.Locale;
 import java.util.Map;
 import java.util.Properties;
 
@@ -35,6 +34,7 @@ import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.core.filter.CompositeFilter;
 import org.apache.logging.log4j.core.filter.ThresholdFilter;
 import org.apache.logging.log4j.status.StatusLogger;
+import org.apache.logging.log4j.util.Strings;
 import org.w3c.dom.Element;
 
 /**
@@ -55,67 +55,24 @@ public abstract class AbstractBuilder {
     private final Properties properties;
 
     public AbstractBuilder() {
-        this.prefix = null;
-        this.properties = new Properties();
+        this(null, new Properties());
     }
 
-    public AbstractBuilder(String prefix, Properties props) {
-        this.prefix = prefix + ".";
+    public AbstractBuilder(final String prefix, final Properties props) {
+        this.prefix = prefix != null ? prefix + "." : null;
         this.properties = (Properties) props.clone();
-        Map<String, String> map = new HashMap<>();
+        final Map<String, String> map = new HashMap<>();
         System.getProperties().forEach((k, v) -> map.put(k.toString(), v.toString()));
         props.forEach((k, v) -> map.put(k.toString(), v.toString()));
         // normalize keys to lower case for case-insensitive access.
-        props.forEach((k, v) -> map.put(toLowerCase(k.toString()), v.toString()));
-        props.entrySet().forEach(e -> this.properties.put(toLowerCase(e.getKey().toString()), e.getValue()));
+        props.forEach((k, v) -> map.put(toBeanKey(k.toString()), v.toString()));
+        props.entrySet().forEach(e -> this.properties.put(toBeanKey(e.getKey().toString()), e.getValue()));
     }
 
-    public String getProperty(String key) {
-        return getProperty(key, null);
-    }
-
-    public String getProperty(String key, String defaultValue) {
-        String fullKey = prefix + key;
-        String value = properties.getProperty(fullKey);
-        value = value != null ? value : properties.getProperty(toLowerCase(fullKey), defaultValue);
-        value = value == null ? defaultValue : substVars(value);
-        return value == null ? defaultValue : value;
-    }
-
-    protected String getNameAttribute(Element element) {
-        return element.getAttribute(NAME_ATTR);
-    }
-
-    protected String getValueAttribute(Element element) {
-        return substVars(element.getAttribute(VALUE_ATTR));
-    }
-
-    public boolean getBooleanProperty(String key) {
-        return Boolean.parseBoolean(getProperty(key, Boolean.FALSE.toString()));
-    }
-
-    public int getIntegerProperty(String key, int defaultValue) {
-        String value = null;
-        try {
-            value = getProperty(key);
-            if (value != null) {
-                return Integer.parseInt(value);
-            }
-        } catch (Exception ex) {
-            LOGGER.warn("Error converting value {} of {} to an integer: {}", value, key, ex.getMessage());
-        }
-        return defaultValue;
-    }
-
-    public Properties getProperties() {
-        return properties;
-    }
-
-
-    protected org.apache.logging.log4j.core.Filter buildFilters(String level, Filter filter) {
+    protected org.apache.logging.log4j.core.Filter buildFilters(final String level, final Filter filter) {
         if (level != null && filter != null) {
-            List<org.apache.logging.log4j.core.Filter> filterList = new ArrayList<>();
-            org.apache.logging.log4j.core.Filter thresholdFilter =
+            final List<org.apache.logging.log4j.core.Filter> filterList = new ArrayList<>();
+            final org.apache.logging.log4j.core.Filter thresholdFilter =
                     ThresholdFilter.createFilter(OptionConverter.convertLevel(level, Level.TRACE),
                             org.apache.logging.log4j.core.Filter.Result.NEUTRAL,
                             org.apache.logging.log4j.core.Filter.Result.DENY);
@@ -143,12 +100,79 @@ public abstract class AbstractBuilder {
         return null;
     }
 
-    protected String substVars(String value) {
+    private String capitalize(final String value) {
+        if (Strings.isEmpty(value) || Character.isUpperCase(value.charAt(0))) {
+            return value;
+        }
+        final char[] chars = value.toCharArray();
+        chars[0] = Character.toUpperCase(chars[0]);
+        return new String(chars);
+    }
+
+    public boolean getBooleanProperty(final String key) {
+        return Boolean.parseBoolean(getProperty(key, Boolean.FALSE.toString()));
+    }
+
+    public int getIntegerProperty(final String key, final int defaultValue) {
+        String value = null;
+        try {
+            value = getProperty(key);
+            if (value != null) {
+                return Integer.parseInt(value);
+            }
+        } catch (final Exception ex) {
+            LOGGER.warn("Error converting value {} of {} to an integer: {}", value, key, ex.getMessage());
+        }
+        return defaultValue;
+    }
+
+    protected String getNameAttribute(final Element element) {
+        return element.getAttribute(NAME_ATTR);
+    }
+
+    protected String getNameAttributeKey(final Element element) {
+        return toBeanKey(element.getAttribute(NAME_ATTR));
+    }
+
+    public Properties getProperties() {
+        return properties;
+    }
+
+    public String getProperty(final String key) {
+        return getProperty(key, null);
+    }
+
+    public String getProperty(final String key, final String defaultValue) {
+        String value = properties.getProperty(prefix + toJavaKey(key));
+        value = value != null ? value : properties.getProperty(prefix + toBeanKey(key), defaultValue);
+        value = value != null ? substVars(value) : defaultValue;
+        return value != null ? value : defaultValue;
+    }
+
+    protected String getValueAttribute(final Element element) {
+        return substVars(element.getAttribute(VALUE_ATTR));
+    }
+
+
+    protected String substVars(final String value) {
         return OptionConverter.substVars(value, properties);
     }
 
-    String toLowerCase(final String value) {
-        return value == null ? null : value.toLowerCase(Locale.ROOT);
+    String toBeanKey(final String value) {
+        return capitalize(value);
+    }
+
+    String toJavaKey(final String value) {
+        return uncapitalize(value);
+    }
+
+    private String uncapitalize(final String value) {
+        if (Strings.isEmpty(value) || Character.isLowerCase(value.charAt(0))) {
+            return value;
+        }
+        final char[] chars = value.toCharArray();
+        chars[0] = Character.toLowerCase(chars[0]);
+        return new String(chars);
     }
 
 }
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/AsyncAppenderBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/AsyncAppenderBuilder.java
index 15162db..be5706d 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/AsyncAppenderBuilder.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/AsyncAppenderBuilder.java
@@ -78,7 +78,7 @@ public class AsyncAppenderBuilder extends AbstractBuilder implements AppenderBui
                     }
                     break;
                 case PARAM_TAG: {
-                    switch (getNameAttribute(currentElement)) {
+                    switch (getNameAttributeKey(currentElement)) {
                         case BUFFER_SIZE_PARAM: {
                             String value = getValueAttribute(currentElement);
                             if (value == null) {
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/ConsoleAppenderBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/ConsoleAppenderBuilder.java
index 9fbd526..491f3c1 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/ConsoleAppenderBuilder.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/ConsoleAppenderBuilder.java
@@ -49,9 +49,10 @@ import org.w3c.dom.Element;
  */
 @Plugin(name = "org.apache.log4j.ConsoleAppender", category = CATEGORY)
 public class ConsoleAppenderBuilder extends AbstractBuilder implements AppenderBuilder {
+
     private static final String SYSTEM_OUT = "System.out";
     private static final String SYSTEM_ERR = "System.err";
-    private static final String TARGET = "target";
+    private static final String TARGET_PARAM = "Target";
 
     private static final Logger LOGGER = StatusLogger.getLogger();
 
@@ -78,11 +79,11 @@ public class ConsoleAppenderBuilder extends AbstractBuilder implements AppenderB
                     filters.get().add(config.parseFilters(currentElement));
                     break;
                 case PARAM_TAG: {
-                    switch (getNameAttribute(currentElement)) {
-                        case TARGET: {
+                    switch (getNameAttributeKey(currentElement)) {
+                        case TARGET_PARAM: {
                             String value = getValueAttribute(currentElement);
                             if (value == null) {
-                                LOGGER.warn("No value supplied for target parameter. Defaulting to System.out.");
+                                LOGGER.warn("No value supplied for target parameter. Defaulting to " + SYSTEM_OUT);
                             } else {
                                 switch (value) {
                                     case SYSTEM_OUT:
@@ -92,8 +93,7 @@ public class ConsoleAppenderBuilder extends AbstractBuilder implements AppenderB
                                         target.set(SYSTEM_ERR);
                                         break;
                                     default:
-                                        LOGGER.warn("Invalid value \"{}\" for target parameter. Using default of System.out",
-                                                value);
+                                        LOGGER.warn("Invalid value \"{}\" for target parameter. Using default of {}", value, SYSTEM_OUT);
                                 }
                             }
                             break;
@@ -131,7 +131,7 @@ public class ConsoleAppenderBuilder extends AbstractBuilder implements AppenderB
         Layout layout = configuration.parseLayout(layoutPrefix, name, props);
         Filter filter = configuration.parseAppenderFilters(props, filterPrefix, name);
         String level = getProperty(THRESHOLD_PARAM);
-        String target = getProperty(TARGET);
+        String target = getProperty(TARGET_PARAM);
         return createAppender(name, layout, filter, level, target, configuration);
     }
 
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/DailyRollingFileAppenderBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/DailyRollingFileAppenderBuilder.java
index 9bca33a..5d0e69a 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/DailyRollingFileAppenderBuilder.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/DailyRollingFileAppenderBuilder.java
@@ -85,7 +85,7 @@ public class DailyRollingFileAppenderBuilder extends AbstractBuilder implements
                     filter.set(config.parseFilters(currentElement));
                     break;
                 case PARAM_TAG: {
-                    switch (getNameAttribute(currentElement)) {
+                    switch (getNameAttributeKey(currentElement)) {
                         case FILE_PARAM:
                             fileName.set(getValueAttribute(currentElement));
                             break;
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/FileAppenderBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/FileAppenderBuilder.java
index f110daa..317eee1 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/FileAppenderBuilder.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/FileAppenderBuilder.java
@@ -79,7 +79,7 @@ public class FileAppenderBuilder extends AbstractBuilder implements AppenderBuil
                     filter.set(config.parseFilters(currentElement));
                     break;
                 case PARAM_TAG: {
-                    switch (getNameAttribute(currentElement)) {
+                    switch (getNameAttributeKey(currentElement)) {
                         case FILE_PARAM:
                             fileName.set(getValueAttribute(currentElement));
                             break;
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/RewriteAppenderBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/RewriteAppenderBuilder.java
index ce54a8f..5a57aba 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/RewriteAppenderBuilder.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/RewriteAppenderBuilder.java
@@ -91,7 +91,7 @@ public class RewriteAppenderBuilder extends AbstractBuilder implements AppenderB
                     break;
                 }
                 case PARAM_TAG: {
-                    if (getNameAttribute(currentElement).equalsIgnoreCase(THRESHOLD_PARAM)) {
+                    if (getNameAttributeKey(currentElement).equalsIgnoreCase(THRESHOLD_PARAM)) {
                         String value = getValueAttribute(currentElement);
                         if (value == null) {
                             LOGGER.warn("No value supplied for Threshold parameter, ignoring.");
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/RollingFileAppenderBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/RollingFileAppenderBuilder.java
index a2e0b2b..b37afd9 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/RollingFileAppenderBuilder.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/RollingFileAppenderBuilder.java
@@ -88,7 +88,7 @@ public class RollingFileAppenderBuilder extends AbstractBuilder implements Appen
                     filter.set(config.parseFilters(currentElement));
                     break;
                 case PARAM_TAG: {
-                    switch (getNameAttribute(currentElement)) {
+                    switch (getNameAttributeKey(currentElement)) {
                         case FILE_PARAM:
                             fileName.set(getValueAttribute(currentElement));
                             break;
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/SyslogAppenderBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/SyslogAppenderBuilder.java
index d2e6aa9..1b8b621 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/SyslogAppenderBuilder.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/SyslogAppenderBuilder.java
@@ -57,11 +57,10 @@ public class SyslogAppenderBuilder extends AbstractBuilder implements AppenderBu
     private static final String DEFAULT_HOST = "localhost";
     private static int DEFAULT_PORT = 514;
     private static final String DEFAULT_FACILITY = "LOCAL0";
-
     private static final Logger LOGGER = StatusLogger.getLogger();
     private static final String FACILITY_PARAM = "Facility";
     private static final String SYSLOG_HOST_PARAM = "SyslogHost";
-    private static final String PROTOCOL_PARAM = "protocol";
+    private static final String PROTOCOL_PARAM = "Protocol";
 
 
     public SyslogAppenderBuilder() {
@@ -89,7 +88,7 @@ public class SyslogAppenderBuilder extends AbstractBuilder implements AppenderBu
                     filter.set(config.parseFilters(currentElement));
                     break;
                 case PARAM_TAG: {
-                    switch (getNameAttribute(currentElement)) {
+                    switch (getNameAttributeKey(currentElement)) {
                         case SYSLOG_HOST_PARAM: {
                             host.set(getValueAttribute(currentElement));
                             break;
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelMatchFilterBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelMatchFilterBuilder.java
index 194a8a5..7016da3 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelMatchFilterBuilder.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelMatchFilterBuilder.java
@@ -58,7 +58,7 @@ public class LevelMatchFilterBuilder extends AbstractBuilder implements FilterBu
         final AtomicBoolean acceptOnMatch = new AtomicBoolean();
         forEachElement(filterElement.getElementsByTagName("param"), currentElement -> {
             if (currentElement.getTagName().equals("param")) {
-                switch (getNameAttribute(currentElement)) {
+                switch (getNameAttributeKey(currentElement)) {
                     case LEVEL:
                         level.set(getValueAttribute(currentElement));
                         break;
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelRangeFilterBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelRangeFilterBuilder.java
index 6a5dd78..7162ecf 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelRangeFilterBuilder.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelRangeFilterBuilder.java
@@ -29,10 +29,8 @@ import org.apache.log4j.config.PropertiesConfiguration;
 import org.apache.log4j.spi.Filter;
 import org.apache.log4j.xml.XmlConfiguration;
 import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.core.config.plugins.Plugin;
 import org.apache.logging.log4j.core.filter.LevelRangeFilter;
-import org.apache.logging.log4j.status.StatusLogger;
 import org.w3c.dom.Element;
 
 /**
@@ -41,7 +39,6 @@ import org.w3c.dom.Element;
 @Plugin(name = "org.apache.log4j.varia.LevelRangeFilter", category = CATEGORY)
 public class LevelRangeFilterBuilder extends AbstractBuilder implements FilterBuilder {
 
-    private static final Logger LOGGER = StatusLogger.getLogger();
     private static final String LEVEL_MAX = "LevelMax";
     private static final String LEVEL_MIN = "LevelMin";
     private static final String ACCEPT_ON_MATCH = "AcceptOnMatch";
@@ -60,7 +57,7 @@ public class LevelRangeFilterBuilder extends AbstractBuilder implements FilterBu
         final AtomicBoolean acceptOnMatch = new AtomicBoolean();
         forEachElement(filterElement.getElementsByTagName("param"), currentElement -> {
             if (currentElement.getTagName().equals("param")) {
-                switch (getNameAttribute(currentElement)) {
+                switch (getNameAttributeKey(currentElement)) {
                     case LEVEL_MAX:
                         levelMax.set(getValueAttribute(currentElement));
                         break;
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/StringMatchFilterBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/StringMatchFilterBuilder.java
index 00de770..00101c0 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/StringMatchFilterBuilder.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/StringMatchFilterBuilder.java
@@ -49,7 +49,7 @@ public class StringMatchFilterBuilder extends AbstractBuilder implements FilterB
         final AtomicReference<String> text = new AtomicReference<>();
         forEachElement(filterElement.getElementsByTagName("param"), currentElement -> {
             if (currentElement.getTagName().equals("param")) {
-                switch (getNameAttribute(currentElement)) {
+                switch (getNameAttributeKey(currentElement)) {
                     case STRING_TO_MATCH:
                         text.set(getValueAttribute(currentElement));
                         break;
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/HtmlLayoutBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/HtmlLayoutBuilder.java
index e3dd899..dd3a2d1 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/HtmlLayoutBuilder.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/HtmlLayoutBuilder.java
@@ -29,10 +29,8 @@ import org.apache.log4j.bridge.LayoutWrapper;
 import org.apache.log4j.builders.AbstractBuilder;
 import org.apache.log4j.config.PropertiesConfiguration;
 import org.apache.log4j.xml.XmlConfiguration;
-import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.core.config.plugins.Plugin;
 import org.apache.logging.log4j.core.layout.HtmlLayout;
-import org.apache.logging.log4j.status.StatusLogger;
 import org.w3c.dom.Element;
 
 /**
@@ -41,10 +39,8 @@ import org.w3c.dom.Element;
 @Plugin(name = "org.apache.log4j.HTMLLayout", category = CATEGORY)
 public class HtmlLayoutBuilder extends AbstractBuilder implements LayoutBuilder {
 
-    private static final Logger LOGGER = StatusLogger.getLogger();
-
-    private static final String TITLE = "Title";
-    private static final String LOCATION_INFO = "LocationInfo";
+    private static final String TITLE_PARAM = "Title";
+    private static final String LOCATION_INFO_PARAM = "LocationInfo";
 
     public HtmlLayoutBuilder() {
     }
@@ -60,9 +56,9 @@ public class HtmlLayoutBuilder extends AbstractBuilder implements LayoutBuilder
         final AtomicBoolean locationInfo = new AtomicBoolean();
         forEachElement(layoutElement.getElementsByTagName("param"), currentElement -> {
             if (currentElement.getTagName().equals(PARAM_TAG)) {
-                if (TITLE.equalsIgnoreCase(currentElement.getAttribute("name"))) {
+                if (TITLE_PARAM.equalsIgnoreCase(currentElement.getAttribute("name"))) {
                     title.set(currentElement.getAttribute("value"));
-                } else if (LOCATION_INFO.equalsIgnoreCase(currentElement.getAttribute("name"))) {
+                } else if (LOCATION_INFO_PARAM.equalsIgnoreCase(currentElement.getAttribute("name"))) {
                     locationInfo.set(Boolean.parseBoolean(currentElement.getAttribute("value")));
                 }
             }
@@ -72,8 +68,8 @@ public class HtmlLayoutBuilder extends AbstractBuilder implements LayoutBuilder
 
     @Override
     public Layout parseLayout(PropertiesConfiguration config) {
-        String title = getProperty(TITLE);
-        boolean locationInfo = getBooleanProperty(LOCATION_INFO);
+        String title = getProperty(TITLE_PARAM);
+        boolean locationInfo = getBooleanProperty(LOCATION_INFO_PARAM);
         return createLayout(title, locationInfo);
     }
 
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/TTCCLayoutBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/TTCCLayoutBuilder.java
index 1f53571..f84ae4b 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/TTCCLayoutBuilder.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/TTCCLayoutBuilder.java
@@ -30,10 +30,8 @@ import org.apache.log4j.builders.AbstractBuilder;
 import org.apache.log4j.config.Log4j1Configuration;
 import org.apache.log4j.config.PropertiesConfiguration;
 import org.apache.log4j.xml.XmlConfiguration;
-import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.core.config.plugins.Plugin;
 import org.apache.logging.log4j.core.layout.PatternLayout;
-import org.apache.logging.log4j.status.StatusLogger;
 import org.w3c.dom.Element;
 
 /**
@@ -42,8 +40,6 @@ import org.w3c.dom.Element;
 @Plugin(name = "org.apache.log4j.TTCCLayout", category = CATEGORY)
 public class TTCCLayoutBuilder extends AbstractBuilder implements LayoutBuilder {
 
-    private static final Logger LOGGER = StatusLogger.getLogger();
-
     private static final String THREAD_PRINTING_PARAM = "ThreadPrinting";
     private static final String CATEGORY_PREFIXING_PARAM = "CategoryPrefixing";
     private static final String CONTEXT_PRINTING_PARAM = "ContextPrinting";
@@ -66,7 +62,7 @@ public class TTCCLayoutBuilder extends AbstractBuilder implements LayoutBuilder
         final AtomicReference<String> timezone = new AtomicReference<>();
         forEachElement(layoutElement.getElementsByTagName("param"), currentElement -> {
             if (currentElement.getTagName().equals(PARAM_TAG)) {
-                switch (getNameAttribute(currentElement)) {
+                switch (getNameAttributeKey(currentElement)) {
                     case THREAD_PRINTING_PARAM:
                         threadPrinting.set(Boolean.parseBoolean(getValueAttribute(currentElement)));
                         break;
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/XmlLayoutBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/XmlLayoutBuilder.java
index 109b01e..e3a970b 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/XmlLayoutBuilder.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/XmlLayoutBuilder.java
@@ -28,10 +28,8 @@ import org.apache.log4j.bridge.LayoutWrapper;
 import org.apache.log4j.builders.AbstractBuilder;
 import org.apache.log4j.config.PropertiesConfiguration;
 import org.apache.log4j.xml.XmlConfiguration;
-import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.core.config.plugins.Plugin;
 import org.apache.logging.log4j.core.layout.XmlLayout;
-import org.apache.logging.log4j.status.StatusLogger;
 import org.w3c.dom.Element;
 
 /**
@@ -40,8 +38,6 @@ import org.w3c.dom.Element;
 @Plugin(name = "org.apache.log4j.xml.XMLLayout", category = CATEGORY)
 public class XmlLayoutBuilder extends AbstractBuilder implements LayoutBuilder {
 
-    private static final Logger LOGGER = StatusLogger.getLogger();
-
     private static final String LOCATION_INFO = "LocationInfo";
     private static final String PROPERTIES = "Properties";