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 75cb5f7ca0b1..440769d660c5 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 @@ -620,13 +620,19 @@ protected void logStartupProfileInfo(ConfigurableApplicationContext context) { 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 b989ee6e5cec..6afb22259a68 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 @@ -232,7 +232,7 @@ void logsNoActiveProfiles(CapturedOutput output) { 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 @@ -240,7 +240,7 @@ void logsActiveProfiles(CapturedOutput output) { 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 @@ -252,6 +252,15 @@ void enableBannerInLogViaProperty(CapturedOutput output) { 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);