Index: src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java =================================================================== --- src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java (revision 1519123) +++ src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java (working copy) @@ -221,9 +221,12 @@ } } final String scheme = configLocation.getScheme(); - if (scheme == null || scheme.equals("classloader")) { + if (scheme == null || scheme.equals("classpath")) { final ClassLoader loader = this.getClass().getClassLoader(); - final ConfigurationSource source = getInputFromResource(configLocation.getPath(), loader); + final ConfigurationSource source = + getInputFromResource( + scheme == null ? configLocation.toString() : configLocation.toString().substring( + "classpath:".length()), loader); if (source != null) { return source; } @@ -365,7 +368,7 @@ final String[] types = factory.getSupportedTypes(); if (types != null) { for (final String type : types) { - if (type.equals("*") || configLocation.getPath().endsWith(type)) { + if (type.equals("*") || configLocation.toString().endsWith(type)) { final Configuration config = factory.getConfiguration(name, configLocation); if (config != null) { return config; Index: src/test/java/org/apache/logging/log4j/core/config/TestConfigurator.java =================================================================== --- src/test/java/org/apache/logging/log4j/core/config/TestConfigurator.java (revision 1519123) +++ src/test/java/org/apache/logging/log4j/core/config/TestConfigurator.java (working copy) @@ -138,6 +138,23 @@ assertTrue("Incorrect Configuration. Expected " + NullConfiguration.NULL_NAME + " but found " + config.getName(), NullConfiguration.NULL_NAME.equals(config.getName())); } + + @Test + public void testFromClassPathWithPrefix() throws Exception { + final LoggerContext ctx = Configurator.initialize("Test1", "classpath:log4j2-config.xml"); + final Logger logger = LogManager.getLogger("org.apache.test.TestConfigurator"); + Configuration config = ctx.getConfiguration(); + assertNotNull("No configuration", config); + assertTrue("Incorrect Configuration. Expected " + CONFIG_NAME + " but found " + config.getName(), + CONFIG_NAME.equals(config.getName())); + final Map map = config.getAppenders(); + assertNotNull("No Appenders", map != null && map.size() > 0); + assertTrue("Wrong configuration", map.containsKey("List")); + Configurator.shutdown(ctx); + config = ctx.getConfiguration(); + assertTrue("Incorrect Configuration. Expected " + NullConfiguration.NULL_NAME + " but found " + + config.getName(), NullConfiguration.NULL_NAME.equals(config.getName())); + } @Test public void testByName() throws Exception {