diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/StartupInfoLogger.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/StartupInfoLogger.java index 8224da56544..630807b526d 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/StartupInfoLogger.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/StartupInfoLogger.java @@ -87,7 +87,7 @@ class StartupInfoLogger { message.append("Started "); appendApplicationName(message); message.append(" in "); - message.append(stopWatch.getTotalTimeSeconds()); + message.append(stopWatch.getTotalTimeMillis() / 1000.0); message.append(" seconds"); try { double uptime = ManagementFactory.getRuntimeMXBean().getUptime() / 1000.0; diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/StartUpLoggerTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/StartupInfoLoggerTests.java similarity index 71% rename from spring-boot-project/spring-boot/src/test/java/org/springframework/boot/StartUpLoggerTests.java rename to spring-boot-project/spring-boot/src/test/java/org/springframework/boot/StartupInfoLoggerTests.java index bd84ec87b23..668b61a3f35 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/StartUpLoggerTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/StartupInfoLoggerTests.java @@ -20,6 +20,8 @@ import org.apache.commons.logging.Log; import org.junit.jupiter.api.Test; import org.mockito.ArgumentCaptor; +import org.springframework.util.StopWatch; + import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.BDDMockito.given; import static org.mockito.Mockito.mock; @@ -31,7 +33,7 @@ import static org.mockito.Mockito.verify; * @author Dave Syer * @author Andy Wilkinson */ -class StartUpLoggerTests { +class StartupInfoLoggerTests { private final Log log = mock(Log.class); @@ -44,4 +46,17 @@ class StartUpLoggerTests { assertThat(captor.getValue().toString()).startsWith("Starting " + getClass().getSimpleName()); } + @Test + void startedFormat() { + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + given(this.log.isInfoEnabled()).willReturn(true); + stopWatch.stop(); + new StartupInfoLogger(getClass()).logStarted(this.log, stopWatch); + ArgumentCaptor captor = ArgumentCaptor.forClass(Object.class); + verify(this.log).info(captor.capture()); + assertThat(captor.getValue().toString()).matches("Started " + getClass().getSimpleName() + + " in \\d+\\.\\d{1,3} seconds \\(JVM running for \\d+\\.\\d{1,3}\\)"); + } + }