Browse Source

Check that URL is actually a file URL before getting a File from it

Previously, Log4J2LoggingSystem used ResourceUtils.isFileURL(URL) to
check that the URL of the configuration was suitable for accessing as a
File. Unfortunately, this fails when the URL’s protocol is vfs or
vfsfile as both return true and then fail when the URL is subsequently
passed into ResourceUtils.getFile(URL).

This commit switches to checking that the URL’s protocol is file,
the only protocol that will allow getFile(URL) to succeed.

Closes gh-6246
pull/6458/head
Andy Wilkinson 10 years ago
parent
commit
02e989c863
  1. 4
      spring-boot/src/main/java/org/springframework/boot/logging/log4j2/Log4J2LoggingSystem.java

4
spring-boot/src/main/java/org/springframework/boot/logging/log4j2/Log4J2LoggingSystem.java

@ -58,6 +58,8 @@ import org.springframework.util.StringUtils; @@ -58,6 +58,8 @@ import org.springframework.util.StringUtils;
*/
public class Log4J2LoggingSystem extends Slf4JLoggingSystem {
private static final String FILE_PROTOCOL = "file";
private static final Map<LogLevel, Level> LEVELS;
static {
@ -172,7 +174,7 @@ public class Log4J2LoggingSystem extends Slf4JLoggingSystem { @@ -172,7 +174,7 @@ public class Log4J2LoggingSystem extends Slf4JLoggingSystem {
private ConfigurationSource getConfigurationSource(URL url) throws IOException {
InputStream stream = url.openStream();
if (ResourceUtils.isFileURL(url)) {
if (FILE_PROTOCOL.equals(url.getProtocol())) {
return new ConfigurationSource(stream, ResourceUtils.getFile(url));
}
return new ConfigurationSource(stream, url);

Loading…
Cancel
Save