From c8466a14e97ff98d26cc5b2fc4e8d10d50001aef Mon Sep 17 00:00:00 2001 From: gcoppex Date: Thu, 17 Feb 2022 19:14:28 +0100 Subject: [PATCH] Clarify log message with a profile containing a comma See gh-29896 --- .../org/springframework/boot/SpringApplication.java | 10 ++++++++-- .../boot/SpringApplicationTests.java | 13 +++++++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/SpringApplication.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/SpringApplication.java index a705c250b71..29c06093fc1 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/SpringApplication.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/SpringApplication.java @@ -667,13 +667,19 @@ public class SpringApplication { Log log = getApplicationLog(); if (log.isInfoEnabled()) { String[] activeProfiles = context.getEnvironment().getActiveProfiles(); + for (int i = 0; i < activeProfiles.length; i++) { + activeProfiles[i] = "\"" + activeProfiles[i] + "\""; + } if (ObjectUtils.isEmpty(activeProfiles)) { String[] defaultProfiles = context.getEnvironment().getDefaultProfiles(); - log.info("No active profile set, falling back to default profiles: " + for (int i = 0; i < defaultProfiles.length; i++) { + defaultProfiles[i] = "\"" + defaultProfiles[i] + "\""; + } + log.info("No active profile set, falling back to " + defaultProfiles.length + " default profile(s): " + StringUtils.arrayToCommaDelimitedString(defaultProfiles)); } else { - log.info("The following profiles are active: " + log.info("The following " + activeProfiles.length + " profile(s) are active: " + StringUtils.arrayToCommaDelimitedString(activeProfiles)); } } diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/SpringApplicationTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/SpringApplicationTests.java index 25c0c46f657..c03784fe46e 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/SpringApplicationTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/SpringApplicationTests.java @@ -253,7 +253,7 @@ class SpringApplicationTests { SpringApplication application = new SpringApplication(ExampleConfig.class); application.setWebApplicationType(WebApplicationType.NONE); this.context = application.run(); - assertThat(output).contains("No active profile set, falling back to default profiles: default"); + assertThat(output).contains("No active profile set, falling back to 1 default profile(s): \"default\""); } @Test @@ -261,7 +261,7 @@ class SpringApplicationTests { SpringApplication application = new SpringApplication(ExampleConfig.class); application.setWebApplicationType(WebApplicationType.NONE); this.context = application.run("--spring.profiles.active=myprofiles"); - assertThat(output).contains("The following profiles are active: myprofile"); + assertThat(output).contains("The following 1 profile(s) are active: \"myprofiles\""); } @Test @@ -273,6 +273,15 @@ class SpringApplicationTests { assertThat(output).contains("o.s.b.SpringApplication"); } + @Test + void logsMultipleActiveProfilesWithComma(CapturedOutput output) { + SpringApplication application = new SpringApplication(ExampleConfig.class); + application.setWebApplicationType(WebApplicationType.NONE); + application.setAdditionalProfiles("p1,p2", "p3"); + application.run(); + assertThat(output).contains("The following 2 profile(s) are active: \"p1,p2\",\"p3\""); + } + @Test void setIgnoreBeanInfoPropertyByDefault(CapturedOutput output) { SpringApplication application = new SpringApplication(ExampleConfig.class);