Repository: logging-log4j2 Updated Branches: refs/heads/master a504413ae -> 794c46911
[LOG4J2-1045] Externalize log4j2.xml via URL resource. Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/794c4691 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/794c4691 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/794c4691 Branch: refs/heads/master Commit: 794c4691185b56ad9faa75a5bf269ded00dfaa53 Parents: a504413 Author: Gary Gregory <[email protected]> Authored: Tue Jun 16 12:45:30 2015 -0700 Committer: Gary Gregory <[email protected]> Committed: Tue Jun 16 12:45:30 2015 -0700 ---------------------------------------------------------------------- .../log4j/core/config/ConfigurationFactory.java | 48 ++++++++++++++------ src/changes/changes.xml | 3 ++ 2 files changed, 37 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/794c4691/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java index 087e84c..3c8c44a 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java @@ -388,42 +388,58 @@ public abstract class ConfigurationFactory { public Configuration getConfiguration(final String name, final URI configLocation) { if (configLocation == null) { - final String config = this.substitutor.replace( - PropertiesUtil.getProperties().getStringProperty(CONFIGURATION_FILE_PROPERTY)); - if (config != null) { + final String configLocationStr = this.substitutor.replace(PropertiesUtil.getProperties() + .getStringProperty(CONFIGURATION_FILE_PROPERTY)); + if (configLocationStr != null) { ConfigurationSource source = null; try { - source = getInputFromUri(FileUtils.getCorrectedFilePathUri(config)); + source = getInputFromUri(FileUtils.getCorrectedFilePathUri(configLocationStr)); } catch (final Exception ex) { // Ignore the error and try as a String. LOGGER.catching(Level.DEBUG, ex); } if (source == null) { final ClassLoader loader = LoaderUtil.getThreadContextClassLoader(); - source = getInputFromString(config, loader); + source = getInputFromString(configLocationStr, loader); } if (source != null) { - for (final ConfigurationFactory factory : factories) { + for (final ConfigurationFactory factory : getFactories()) { final String[] types = factory.getSupportedTypes(); if (types != null) { for (final String type : types) { - if (type.equals("*") || config.endsWith(type)) { - final Configuration c = factory.getConfiguration(source); - if (c != null) { - return c; + if (type.equals("*") || configLocationStr.endsWith(type)) { + final Configuration config = factory.getConfiguration(source); + if (config != null) { + return config; } } } } } } + } else { + for (final ConfigurationFactory factory : getFactories()) { + final String[] types = factory.getSupportedTypes(); + if (types != null) { + for (final String type : types) { + if (type.equals("*")) { + final Configuration config = factory.getConfiguration(name, configLocation); + if (config != null) { + return config; + } + } + } + } + } } } else { - for (final ConfigurationFactory factory : factories) { + // configLocation != null + final String configLocationStr = configLocation.toString(); + for (final ConfigurationFactory factory : getFactories()) { final String[] types = factory.getSupportedTypes(); if (types != null) { for (final String type : types) { - if (type.equals("*") || configLocation.toString().endsWith(type)) { + if (type.equals("*") || configLocationStr.endsWith(type)) { final Configuration config = factory.getConfiguration(name, configLocation); if (config != null) { return config; @@ -454,7 +470,7 @@ public abstract class ConfigurationFactory { private Configuration getConfiguration(final boolean isTest, final String name) { final boolean named = Strings.isNotEmpty(name); final ClassLoader loader = LoaderUtil.getThreadContextClassLoader(); - for (final ConfigurationFactory factory : factories) { + for (final ConfigurationFactory factory : getFactories()) { String configName; final String prefix = isTest ? TEST_PREFIX : DEFAULT_PREFIX; final String [] types = factory.getSupportedTypes(); @@ -486,7 +502,7 @@ public abstract class ConfigurationFactory { public Configuration getConfiguration(final ConfigurationSource source) { if (source != null) { final String config = source.getLocation(); - for (final ConfigurationFactory factory : factories) { + for (final ConfigurationFactory factory : getFactories()) { final String[] types = factory.getSupportedTypes(); if (types != null) { for (final String type : types) { @@ -507,4 +523,8 @@ public abstract class ConfigurationFactory { return null; } } + + static List<ConfigurationFactory> getFactories() { + return factories; + } } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/794c4691/src/changes/changes.xml ---------------------------------------------------------------------- diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 61cd933..8730a7e 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -81,6 +81,9 @@ <action issue="LOG4J2-982" dev="ggregory" type="fix" due-to="Mikhail Mazurskiy"> Use System.nanoTime() to measure time intervals. </action> + <action issue="LOG4J2-1045" dev="ggregory" type="fix" due-to="Günter Albrecht"> + Externalize log4j2.xml via URL resource. + </action> <action issue="LOG4J2-890" dev="ggregory" type="update" due-to="Hassan Kalaldeh, Robert Andersson, Remko Popma"> log4j-web-2.1 should workaround a bug in JBOSS EAP 6.2. </action>
