diff --git a/src/main/java/com/netflix/blitz4j/LoggingConfiguration.java b/src/main/java/com/netflix/blitz4j/LoggingConfiguration.java index d708fa9..7283e14 100644 --- a/src/main/java/com/netflix/blitz4j/LoggingConfiguration.java +++ b/src/main/java/com/netflix/blitz4j/LoggingConfiguration.java @@ -21,6 +21,8 @@ import java.net.URL; import java.util.Enumeration; import java.util.HashMap; +import java.util.Iterator; +import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Properties; @@ -28,8 +30,9 @@ import java.util.concurrent.Executors; import java.util.concurrent.atomic.AtomicInteger; -import org.apache.commons.configuration.ConfigurationConverter; +import org.apache.commons.configuration.AbstractConfiguration; import org.apache.commons.configuration.ConfigurationException; +import org.apache.commons.lang.StringUtils; import org.apache.log4j.LogManager; import org.apache.log4j.PropertyConfigurator; import org.apache.log4j.helpers.Loader; @@ -318,7 +321,19 @@ public synchronized void clearProperty(Object source, String name, Object value, * com.netflix.config.PropertyListener#configSourceLoaded(java.lang.Object) */ public void configSourceLoaded(Object source) { - Properties props = ConfigurationConverter.getProperties(ConfigurationManager.getConfigInstance()); + AbstractConfiguration config = ConfigurationManager.getConfigInstance(); + Properties props = new Properties(); + + char delimiter = config.getListDelimiter(); + + for (Iterator keys = config.getKeys(LOG4J_PREFIX); keys.hasNext();) { + String key = keys.next(); + List list = config.getList(key); + + // turn the list into a string + props.setProperty(key, StringUtils.join(list.iterator(), delimiter)); + } + reconfigure(props); } @@ -338,7 +353,8 @@ public synchronized void setProperty(Object source, String name, Object value, /** * Set a snapshot of all LOG4J properties and reconfigure if properties have been - * changed. + * changed. This assumes that the Properties being set here has already been filtered + * to only properties starting with LOG4J_PREFIX. * @param props Complete set of ALL log4j configuration properties including all * appenders and log level overrides */ @@ -347,11 +363,9 @@ public synchronized void reconfigure(Properties props) { // set of original initialization properties Properties newOverrideProps = new Properties(); for (Entry prop : props.entrySet()) { - if (isLog4JProperty(prop.getKey().toString())) { - Object initialValue = initialProps.get(prop.getKey()); - if (initialValue == null || !initialValue.equals(prop.getValue())) { - newOverrideProps.put(prop.getKey(), prop.getValue()); - } + Object initialValue = initialProps.get(prop.getKey()); + if (initialValue == null || !initialValue.equals(prop.getValue())) { + newOverrideProps.put(prop.getKey(), prop.getValue()); } }