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>

Reply via email to