Skip to content

Commit 3c558da

Browse files
committed
[bugfix] Normalise Log4j2 config path to file: URI for cross-platform compatibility
Log4j2 cannot resolve a bare Windows path set via the log4j2.configurationFile system property. Converting to a file: URI ensures correct resolution on all platforms.
1 parent 7809adf commit 3c558da

1 file changed

Lines changed: 6 additions & 3 deletions

File tree

  • exist-start/src/main/java/org/exist/start

exist-start/src/main/java/org/exist/start/Main.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@
6565
import java.io.*;
6666
import java.lang.reflect.InvocationTargetException;
6767
import java.lang.reflect.Method;
68+
import java.net.URI;
69+
import java.net.URISyntaxException;
6870
import java.nio.file.Files;
6971
import java.nio.file.InvalidPathException;
7072
import java.nio.file.Path;
@@ -284,10 +286,11 @@ public void runEx(String[] args) throws StartException {
284286
if (existHomeDir.isPresent() && Files.exists(existHomeDir.get().resolve(CONFIG_DIR_NAME))) {
285287
log4jConfigurationFile = existHomeDir.map(f -> f.resolve(CONFIG_DIR_NAME).resolve("log4j2.xml"));
286288
}
289+
}
287290

288-
if (log4jConfigurationFile.isPresent() && Files.isReadable(log4jConfigurationFile.get())) {
289-
System.setProperty(PROP_LOG4J_CONFIGURATION_FILE, log4jConfigurationFile.get().toAbsolutePath().toString());
290-
}
291+
// (fix for windows machine)Always normalise to a file: URI so Log4j2 can resolve it on all platforms (including Windows)
292+
if (log4jConfigurationFile.isPresent() && Files.isReadable(log4jConfigurationFile.get())) {
293+
System.setProperty(PROP_LOG4J_CONFIGURATION_FILE, log4jConfigurationFile.get().toAbsolutePath().toUri().toString());
291294
}
292295

293296
if (log4jConfigurationFile.isPresent()) {

0 commit comments

Comments
 (0)