diff --git a/server/embedded/src/org/labkey/embedded/LabKeyServer.java b/server/embedded/src/org/labkey/embedded/LabKeyServer.java index 7e74ccc801..8de3d892b7 100644 --- a/server/embedded/src/org/labkey/embedded/LabKeyServer.java +++ b/server/embedded/src/org/labkey/embedded/LabKeyServer.java @@ -92,6 +92,40 @@ public static void main(String[] args) application.setDefaultProperties(new HashMap<>() {{ + // GitHub Issue 796: JSON logging stopped after Tomcat/Spring update + // Propagate log4j configuration to Spring Boot config, which is necessary with Spring Boot 4.x + String log4JConfig = System.getProperty("log4j.configurationFile"); + if (log4JConfig != null) + { + String[] log4JConfigParts = log4JConfig.split(","); + if (log4JConfigParts.length > 0) + { + if ("log4j2.xml".equals(log4JConfigParts[0])) + { + // Assume this is the one packaged with our embedded build and on the classpath + put("logging.config", "classpath:log4j2.xml"); + } + else + { + put("logging.config", log4JConfigParts[0]); + } + if (log4JConfigParts.length > 1) + { + StringBuilder sb = new StringBuilder(); + String separator = ""; + for (int i = 1; i < log4JConfigParts.length; i++) + { + sb.append(separator); + separator = ","; + sb.append(log4JConfigParts[i]); + } + put("logging.log4j2.config.override", sb.toString()); + } + else + throw new IllegalArgumentException("log4j.configurationFile must be in the form log4j2.xml[,secondaryFile]"); + } + } + put("server.tomcat.basedir", "."); put("server.tomcat.accesslog.directory", logHome);