From 884c9ef11e938c770f61234d4b296ed4939cb847 Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Tue, 27 Dec 2016 15:18:17 -0800 Subject: [PATCH 1/3] Remove accidentally committed file --- .../boot/test/context/PortTest.java | 87 ------------------- 1 file changed, 87 deletions(-) delete mode 100644 spring-boot-test/src/test/java/org/springframework/boot/test/context/PortTest.java diff --git a/spring-boot-test/src/test/java/org/springframework/boot/test/context/PortTest.java b/spring-boot-test/src/test/java/org/springframework/boot/test/context/PortTest.java deleted file mode 100644 index f7686b2905d..00000000000 --- a/spring-boot-test/src/test/java/org/springframework/boot/test/context/PortTest.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright 2012-2016 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.test.context; - -import org.junit.Test; -import org.junit.runner.RunWith; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.test.context.PortTest.RandomPortInitailizer; -import org.springframework.context.ApplicationContextInitializer; -import org.springframework.context.ConfigurableApplicationContext; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringRunner; -import org.springframework.test.context.support.TestPropertySourceUtils; -import org.springframework.util.SocketUtils; - -import static org.assertj.core.api.Assertions.assertThat; - -@RunWith(SpringRunner.class) -@SpringBootTest -@ContextConfiguration(initializers = RandomPortInitailizer.class) -public class PortTest { - - @Autowired - private SomeService service; - - @Test - public void testName() throws Exception { - System.out.println(this.service); - assertThat(this.service.toString()).containsOnlyDigits(); - } - - @Configuration - static class MyConfig { - - @Bean - public SomeService someService(@Value("${my.random.port}") int port) { - return new SomeService(port); - } - - } - - static class SomeService { - - private final int port; - - public SomeService(int port) { - this.port = port; - } - - @Override - public String toString() { - return String.valueOf(this.port); - } - - } - - public static class RandomPortInitailizer - implements ApplicationContextInitializer { - - @Override - public void initialize(ConfigurableApplicationContext applicationContext) { - int randomPort = SocketUtils.findAvailableTcpPort(); - TestPropertySourceUtils.addInlinedPropertiesToEnvironment(applicationContext, - "my.random.port=" + randomPort); - } - - } - -} From 87a852959d116dd1035aa782c0ea29ffadad1e0f Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Tue, 27 Dec 2016 16:02:00 -0800 Subject: [PATCH 2/3] Support logging.pattern.* properties with Log4J2 Update Log4J2 configurations to respect `FILE_LOG_PATTERN` and `CONSOLE_LOG_PATTERN` system properties. These system properties are set by `LoggingSystemProperties` from `logging.pattern.file` and `logging.pattern.console` properties in the Spring Environment. Fixes gh-7757 --- .../springframework/boot/logging/log4j2/log4j2-file.xml | 7 ++++--- .../org/springframework/boot/logging/log4j2/log4j2.xml | 5 +++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/spring-boot/src/main/resources/org/springframework/boot/logging/log4j2/log4j2-file.xml b/spring-boot/src/main/resources/org/springframework/boot/logging/log4j2/log4j2-file.xml index a97cf4065ed..0c7195a395b 100644 --- a/spring-boot/src/main/resources/org/springframework/boot/logging/log4j2/log4j2-file.xml +++ b/spring-boot/src/main/resources/org/springframework/boot/logging/log4j2/log4j2-file.xml @@ -4,15 +4,16 @@ ???? %xwEx %5p - %d{yyyy-MM-dd HH:mm:ss.SSS} ${LOG_LEVEL_PATTERN} ${sys:PID} --- [%t] %-40.40c{1.} : %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD} + %clr{%d{yyyy-MM-dd HH:mm:ss.SSS}}{faint} %clr{${LOG_LEVEL_PATTERN}} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan} %clr{:}{faint} %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD} + %d{yyyy-MM-dd HH:mm:ss.SSS} ${LOG_LEVEL_PATTERN} ${sys:PID} --- [%t] %-40.40c{1.} : %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD} - + - ${LOG_PATTERN} + ${sys:FILE_LOG_PATTERN} diff --git a/spring-boot/src/main/resources/org/springframework/boot/logging/log4j2/log4j2.xml b/spring-boot/src/main/resources/org/springframework/boot/logging/log4j2/log4j2.xml index dace970e8cf..59c5fdcc4fa 100644 --- a/spring-boot/src/main/resources/org/springframework/boot/logging/log4j2/log4j2.xml +++ b/spring-boot/src/main/resources/org/springframework/boot/logging/log4j2/log4j2.xml @@ -4,11 +4,12 @@ ???? %xwEx %5p - %clr{%d{yyyy-MM-dd HH:mm:ss.SSS}}{faint} %clr{${LOG_LEVEL_PATTERN}} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan} %clr{:}{faint} %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD} + %clr{%d{yyyy-MM-dd HH:mm:ss.SSS}}{faint} %clr{${LOG_LEVEL_PATTERN}} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan} %clr{:}{faint} %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD} + %d{yyyy-MM-dd HH:mm:ss.SSS} ${LOG_LEVEL_PATTERN} ${sys:PID} --- [%t] %-40.40c{1.} : %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD} - + From 1e9e1b04d00ec319e0473f8126b39e6b72ef1de8 Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Tue, 27 Dec 2016 17:28:45 -0800 Subject: [PATCH 3/3] Hide 'No log4j2 configuration file found' error Add a Log4J2 `ConfigurationFactory` that is always applied so that the "No log4j2 configuration file found" error message does not appear. Although the message was harmless it was quite annoying to Spring Boot users who could safely omit the file. Fixes gh-4809 --- .../SpringBootConfigurationFactory.java | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 spring-boot/src/main/java/org/springframework/boot/logging/log4j2/SpringBootConfigurationFactory.java diff --git a/spring-boot/src/main/java/org/springframework/boot/logging/log4j2/SpringBootConfigurationFactory.java b/spring-boot/src/main/java/org/springframework/boot/logging/log4j2/SpringBootConfigurationFactory.java new file mode 100644 index 00000000000..708e6334fc3 --- /dev/null +++ b/spring-boot/src/main/java/org/springframework/boot/logging/log4j2/SpringBootConfigurationFactory.java @@ -0,0 +1,68 @@ +/* + * Copyright 2012-2016 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.boot.logging.log4j2; + +import java.net.URI; + +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.ConfigurationFactory; +import org.apache.logging.log4j.core.config.ConfigurationSource; +import org.apache.logging.log4j.core.config.DefaultConfiguration; +import org.apache.logging.log4j.core.config.Order; +import org.apache.logging.log4j.core.config.plugins.Plugin; + +/** + * Spring Boot {@link ConfigurationFactory} that prevents logger warnings from being + * printed when the application first starts. + * + * @author Phillip Webb + * @since 1.5.0 + */ +@Plugin(name = "SpringBootConfigurationFactory", category = ConfigurationFactory.CATEGORY) +@Order(4) // Order behind XmlConfigurationFactory +public class SpringBootConfigurationFactory extends ConfigurationFactory { + + private static final String[] ALL_TYPES = { "*" }; + + @Override + protected String[] getSupportedTypes() { + return ALL_TYPES; + } + + @Override + public Configuration getConfiguration(LoggerContext loggerContext, String name, + URI configLocation) { + if (configLocation == null) { + return new DefaultConfiguration(); + } + return null; + } + + @Override + public Configuration getConfiguration(LoggerContext loggerContext, String name, + URI configLocation, ClassLoader loader) { + return null; + } + + @Override + public Configuration getConfiguration(LoggerContext loggerContext, + ConfigurationSource source) { + return null; + } + +}