From 3c00bf367d7b03d8b8e005e8097c295996290b59 Mon Sep 17 00:00:00 2001 From: Scott Frederick Date: Fri, 26 Apr 2024 13:33:51 -0500 Subject: [PATCH] Adapt to changes in Logback include processing Fixes gh-40491 --- .../logback/SpringBootJoranConfigurator.java | 10 ++++++++++ .../logback/SpringBootJoranConfiguratorTests.java | 15 +++++++++++++++ .../boot/logging/logback/include-with-profile.xml | 5 +++++ .../logging/logback/include-with-property.xml | 3 +++ .../boot/logging/logback/profile-in-include.xml | 5 +++++ .../boot/logging/logback/property-in-include.xml | 5 +++++ 6 files changed, 43 insertions(+) create mode 100644 spring-boot-project/spring-boot/src/test/resources/org/springframework/boot/logging/logback/include-with-profile.xml create mode 100644 spring-boot-project/spring-boot/src/test/resources/org/springframework/boot/logging/logback/include-with-property.xml create mode 100644 spring-boot-project/spring-boot/src/test/resources/org/springframework/boot/logging/logback/profile-in-include.xml create mode 100644 spring-boot-project/spring-boot/src/test/resources/org/springframework/boot/logging/logback/property-in-include.xml diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/logback/SpringBootJoranConfigurator.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/logback/SpringBootJoranConfigurator.java index c16a7d10b63..6eadc9596d6 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/logback/SpringBootJoranConfigurator.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/logback/SpringBootJoranConfigurator.java @@ -107,6 +107,16 @@ class SpringBootJoranConfigurator extends JoranConfigurator { ruleStore.addTransparentPathPart("springProfile"); } + @Override + public void buildModelInterpretationContext() { + super.buildModelInterpretationContext(); + this.modelInterpretationContext.setConfiguratorSupplier(() -> { + SpringBootJoranConfigurator configurator = new SpringBootJoranConfigurator(this.initializationContext); + configurator.setContext(this.context); + return configurator; + }); + } + boolean configureUsingAotGeneratedArtifacts() { if (!new PatternRules(getContext()).load()) { return false; diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/logging/logback/SpringBootJoranConfiguratorTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/logging/logback/SpringBootJoranConfiguratorTests.java index 2dfb9fe3b59..116c6daab91 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/logging/logback/SpringBootJoranConfiguratorTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/logging/logback/SpringBootJoranConfiguratorTests.java @@ -83,6 +83,14 @@ class SpringBootJoranConfiguratorTests { assertThat(this.output).contains("Hello"); } + @Test + void profileInIncludeActive() throws Exception { + this.environment.setActiveProfiles("production"); + initialize("profile-in-include.xml"); + this.logger.trace("Hello"); + assertThat(this.output).contains("Hello"); + } + @Test void multipleNamesFirstProfileActive() throws Exception { this.environment.setActiveProfiles("production"); @@ -203,6 +211,13 @@ class SpringBootJoranConfiguratorTests { assertThat(this.context.getProperty("MYCHECK")).isNull(); } + @Test + void springPropertyInInclude() throws Exception { + TestPropertySourceUtils.addInlinedPropertiesToEnvironment(this.environment, "my.example-property=test"); + initialize("property-in-include.xml"); + assertThat(this.context.getProperty("MINE")).isEqualTo("test"); + } + @Test void addsAotContributionToContextDuringAotProcessing() throws Exception { withSystemProperty("spring.aot.processing", "true", () -> { diff --git a/spring-boot-project/spring-boot/src/test/resources/org/springframework/boot/logging/logback/include-with-profile.xml b/spring-boot-project/spring-boot/src/test/resources/org/springframework/boot/logging/logback/include-with-profile.xml new file mode 100644 index 00000000000..12772f0a3b2 --- /dev/null +++ b/spring-boot-project/spring-boot/src/test/resources/org/springframework/boot/logging/logback/include-with-profile.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/spring-boot-project/spring-boot/src/test/resources/org/springframework/boot/logging/logback/include-with-property.xml b/spring-boot-project/spring-boot/src/test/resources/org/springframework/boot/logging/logback/include-with-property.xml new file mode 100644 index 00000000000..c7e095d1596 --- /dev/null +++ b/spring-boot-project/spring-boot/src/test/resources/org/springframework/boot/logging/logback/include-with-property.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/spring-boot-project/spring-boot/src/test/resources/org/springframework/boot/logging/logback/profile-in-include.xml b/spring-boot-project/spring-boot/src/test/resources/org/springframework/boot/logging/logback/profile-in-include.xml new file mode 100644 index 00000000000..3c4c9ec17f6 --- /dev/null +++ b/spring-boot-project/spring-boot/src/test/resources/org/springframework/boot/logging/logback/profile-in-include.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/spring-boot-project/spring-boot/src/test/resources/org/springframework/boot/logging/logback/property-in-include.xml b/spring-boot-project/spring-boot/src/test/resources/org/springframework/boot/logging/logback/property-in-include.xml new file mode 100644 index 00000000000..ca2c2705b4e --- /dev/null +++ b/spring-boot-project/spring-boot/src/test/resources/org/springframework/boot/logging/logback/property-in-include.xml @@ -0,0 +1,5 @@ + + + + +