From fb59432cf52e454a3ed41ccbf19d49e45848cc46 Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Sun, 1 Nov 2020 12:54:43 -0800 Subject: [PATCH] Use Graal friendly logging factory implementations Update `LoggingSystemFactory` class present checks to use a static final field so that they work better with Graal. Closes gh-23985 --- .../springframework/boot/logging/java/JavaLoggingSystem.java | 5 ++++- .../boot/logging/log4j2/Log4J2LoggingSystem.java | 5 ++++- .../boot/logging/logback/LogbackLoggingSystem.java | 5 ++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/java/JavaLoggingSystem.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/java/JavaLoggingSystem.java index 93af4b10ab0d..f82200de507a 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/java/JavaLoggingSystem.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/java/JavaLoggingSystem.java @@ -187,9 +187,12 @@ public void run() { @Order(Ordered.LOWEST_PRECEDENCE) public static class Factory implements LoggingSystemFactory { + private static final boolean PRESENT = ClassUtils.isPresent("java.util.logging.LogManager", + Factory.class.getClassLoader()); + @Override public LoggingSystem getLoggingSystem(ClassLoader classLoader) { - if (ClassUtils.isPresent("java.util.logging.LogManager", classLoader)) { + if (PRESENT) { return new JavaLoggingSystem(classLoader); } return null; diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/log4j2/Log4J2LoggingSystem.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/log4j2/Log4J2LoggingSystem.java index 1d90defc5458..ed5e29cc384c 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/log4j2/Log4J2LoggingSystem.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/log4j2/Log4J2LoggingSystem.java @@ -335,9 +335,12 @@ public void run() { @Order(Ordered.LOWEST_PRECEDENCE) public static class Factory implements LoggingSystemFactory { + private static final boolean PRESENT = ClassUtils + .isPresent("org.apache.logging.log4j.core.impl.Log4jContextFactory", Factory.class.getClassLoader()); + @Override public LoggingSystem getLoggingSystem(ClassLoader classLoader) { - if (ClassUtils.isPresent("org.apache.logging.log4j.core.impl.Log4jContextFactory", classLoader)) { + if (PRESENT) { return new Log4J2LoggingSystem(classLoader); } return null; diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/logback/LogbackLoggingSystem.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/logback/LogbackLoggingSystem.java index c0f0a03e5206..5c442284c18a 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/logback/LogbackLoggingSystem.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/logback/LogbackLoggingSystem.java @@ -339,9 +339,12 @@ public void run() { @Order(Ordered.LOWEST_PRECEDENCE) public static class Factory implements LoggingSystemFactory { + private static final boolean PRESENT = ClassUtils.isPresent("ch.qos.logback.core.Appender", + Factory.class.getClassLoader()); + @Override public LoggingSystem getLoggingSystem(ClassLoader classLoader) { - if (ClassUtils.isPresent("ch.qos.logback.core.Appender", classLoader)) { + if (PRESENT) { return new LogbackLoggingSystem(classLoader); } return null;