From bead23944837acfe67991a5353872ebf7d061c85 Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Mon, 25 Jan 2016 13:43:36 +0100 Subject: [PATCH] Remove support for Log4j Apache Log4j 1.x is EOL and has now been replaced by log4j 2. This commit removes the deprecated support for Log4j 1.x See gh-4905 --- spring-boot-dependencies/pom.xml | 11 -- spring-boot-docs/pom.xml | 5 - spring-boot-docs/src/main/asciidoc/howto.adoc | 24 ++- .../main/asciidoc/spring-boot-features.adoc | 9 +- .../src/main/asciidoc/using-spring-boot.adoc | 4 +- spring-boot-parent/pom.xml | 5 + spring-boot-samples/README.adoc | 4 +- spring-boot-samples/pom.xml | 1 - .../spring-boot-sample-actuator-log4j/pom.xml | 60 ------- .../actuator/log4j/HelloWorldService.java | 32 ---- .../log4j/SampleActuatorLog4JApplication.java | 29 ---- .../actuator/log4j/SampleController.java | 46 ------ .../actuator/log4j/ServiceProperties.java | 36 ---- .../src/main/resources/application.properties | 17 -- .../src/main/resources/log4j.properties | 14 -- .../log4j/SampleActuatorApplicationTests.java | 72 -------- .../src/main/resources/log4j.properties | 7 - spring-boot-starters/pom.xml | 1 - .../spring-boot-starter-log4j/pom.xml | 38 ----- .../main/resources/META-INF/spring.provides | 1 - .../src/it/jar-exclude-group/pom.xml | 8 +- .../src/it/jar-exclude-group/verify.groovy | 2 +- .../src/it/jar-test-scope/pom.xml | 6 +- .../src/it/jar-test-scope/verify.groovy | 2 +- .../src/it/jar-with-unpack/pom.xml | 6 +- .../src/it/run-exclude/pom.xml | 10 +- spring-boot/pom.xml | 5 - .../boot/logging/LoggingSystem.java | 5 +- .../logging/log4j/Log4JLoggingSystem.java | 134 --------------- .../boot/logging/log4j/package-info.java | 20 --- .../boot/logging/log4j/log4j-file.properties | 32 ---- .../boot/logging/log4j/log4j.properties | 23 --- .../log4j/Log4JLoggingSystemTests.java | 154 ------------------ .../resources/log4j-nondefault.properties | 10 -- 34 files changed, 40 insertions(+), 793 deletions(-) delete mode 100644 spring-boot-samples/spring-boot-sample-actuator-log4j/pom.xml delete mode 100644 spring-boot-samples/spring-boot-sample-actuator-log4j/src/main/java/sample/actuator/log4j/HelloWorldService.java delete mode 100644 spring-boot-samples/spring-boot-sample-actuator-log4j/src/main/java/sample/actuator/log4j/SampleActuatorLog4JApplication.java delete mode 100644 spring-boot-samples/spring-boot-sample-actuator-log4j/src/main/java/sample/actuator/log4j/SampleController.java delete mode 100644 spring-boot-samples/spring-boot-sample-actuator-log4j/src/main/java/sample/actuator/log4j/ServiceProperties.java delete mode 100644 spring-boot-samples/spring-boot-sample-actuator-log4j/src/main/resources/application.properties delete mode 100644 spring-boot-samples/spring-boot-sample-actuator-log4j/src/main/resources/log4j.properties delete mode 100644 spring-boot-samples/spring-boot-sample-actuator-log4j/src/test/java/sample/actuator/log4j/SampleActuatorApplicationTests.java delete mode 100644 spring-boot-samples/spring-boot-sample-traditional/src/main/resources/log4j.properties delete mode 100644 spring-boot-starters/spring-boot-starter-log4j/pom.xml delete mode 100644 spring-boot-starters/spring-boot-starter-log4j/src/main/resources/META-INF/spring.provides delete mode 100644 spring-boot/src/main/java/org/springframework/boot/logging/log4j/Log4JLoggingSystem.java delete mode 100644 spring-boot/src/main/java/org/springframework/boot/logging/log4j/package-info.java delete mode 100644 spring-boot/src/main/resources/org/springframework/boot/logging/log4j/log4j-file.properties delete mode 100644 spring-boot/src/main/resources/org/springframework/boot/logging/log4j/log4j.properties delete mode 100644 spring-boot/src/test/java/org/springframework/boot/logging/log4j/Log4JLoggingSystemTests.java delete mode 100644 spring-boot/src/test/resources/log4j-nondefault.properties diff --git a/spring-boot-dependencies/pom.xml b/spring-boot-dependencies/pom.xml index 4d14c8a07d..a44df9699b 100644 --- a/spring-boot-dependencies/pom.xml +++ b/spring-boot-dependencies/pom.xml @@ -110,7 +110,6 @@ 1.2 4.12 3.4.2 - 1.2.17 2.4.1 1.1.3 1.2.3 @@ -362,11 +361,6 @@ spring-boot-starter-undertow 1.4.0.BUILD-SNAPSHOT - - org.springframework.boot - spring-boot-starter-log4j - 1.4.0.BUILD-SNAPSHOT - org.springframework.boot spring-boot-starter-log4j2 @@ -854,11 +848,6 @@ junit ${junit.version} - - log4j - log4j - ${log4j.version} - mysql mysql-connector-java diff --git a/spring-boot-docs/pom.xml b/spring-boot-docs/pom.xml index a33396a2a9..30ea7fae87 100644 --- a/spring-boot-docs/pom.xml +++ b/spring-boot-docs/pom.xml @@ -177,11 +177,6 @@ junit true - - log4j - log4j - true - net.sf.ehcache ehcache diff --git a/spring-boot-docs/src/main/asciidoc/howto.adoc b/spring-boot-docs/src/main/asciidoc/howto.adoc index 40188e50db..8e14623edc 100644 --- a/spring-boot-docs/src/main/asciidoc/howto.adoc +++ b/spring-boot-docs/src/main/asciidoc/howto.adoc @@ -1313,12 +1313,11 @@ You also need to add `logging.file` to your `application.properties`: [[howto-configure-log4j-for-logging]] === Configure Log4j for logging -Spring Boot also supports either http://logging.apache.org/log4j/1.2[Log4j] or -http://logging.apache.org/log4j/2.x[Log4j 2] for logging configuration, but only if one -of them is on the classpath. If you are using the starter poms for assembling -dependencies that means you have to exclude Logback and then include your chosen version -of Log4j instead. If you aren't using the starter poms then you need to provide -`commons-logging` (at least) in addition to your chosen version of Log4j. +Spring Boot supports http://logging.apache.org/log4j/2.x[Log4j 2] for logging +configuration if it is on the classpath. If you are using the starter poms for +assembling dependencies that means you have to exclude Logback and then include log4j 2 +instead. If you aren't using the starter poms then you need to provide `commons-logging` +(at least) in addition to Log4j 2. The simplest path is probably through the starter poms, even though it requires some jiggling with excludes, .e.g. in Maven: @@ -1341,17 +1340,14 @@ jiggling with excludes, .e.g. in Maven: org.springframework.boot - spring-boot-starter-log4j + spring-boot-starter-log4j2 ---- -To use Log4j 2, simply depend on `spring-boot-starter-log4j2` rather than -`spring-boot-starter-log4j`. - -NOTE: The use of one of the Log4j starters gathers together the dependencies for -common logging requirements (e.g. including having Tomcat use `java.util.logging` but -configuring the output using Log4j or Log4j 2). See the Actuator Log4j or Log4j 2 -samples for more detail and to see it in action. +NOTE: The use of the Log4j starters gathers together the dependencies for common logging +requirements (e.g. including having Tomcat use `java.util.logging` but configuring the +output using Log4j 2). See the Actuator Log4j 2 samples for more detail and to see it in +action. diff --git a/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc b/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc index 88ac4b9976..7aa7582164 100644 --- a/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc +++ b/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc @@ -983,9 +983,9 @@ Spring Boot uses http://commons.apache.org/logging[Commons Logging] for all inte logging, but leaves the underlying log implementation open. Default configurations are provided for http://docs.oracle.com/javase/7/docs/api/java/util/logging/package-summary.html[Java Util Logging], -http://logging.apache.org/log4j/[Log4J], http://logging.apache.org/log4j/2.x/[Log4J2] and -http://logback.qos.ch/[Logback]. In each case loggers are pre-configured to use console -output with optional file output also available. +http://logging.apache.org/log4j/2.x/[Log4J2] andhttp://logback.qos.ch/[Logback]. In each +case loggers are pre-configured to use console output with optional file output also +available. By default, If you use the '`Starter POMs`', Logback will be used for logging. Appropriate Logback routing is also included to ensure that dependent libraries that use @@ -1182,9 +1182,6 @@ Depending on your logging system, the following files will be loaded: |Logback |`logback-spring.xml`, `logback-spring.groovy`, `logback.xml` or `logback.groovy` -|Log4j -|`log4j-spring.properties`, `log4j-spring.xml`, `log4j.properties` or `log4j.xml` - |Log4j2 |`log4j2-spring.xml` or `log4j2.xml` diff --git a/spring-boot-docs/src/main/asciidoc/using-spring-boot.adoc b/spring-boot-docs/src/main/asciidoc/using-spring-boot.adoc index e5224c16df..c2a414ea8b 100644 --- a/spring-boot-docs/src/main/asciidoc/using-spring-boot.adoc +++ b/spring-boot-docs/src/main/asciidoc/using-spring-boot.adoc @@ -517,8 +517,8 @@ swap specific technical facets. |`spring-boot-starter-jetty` |Imports the Jetty HTTP engine (to be used as an alternative to Tomcat). -|`spring-boot-starter-log4j` -|Support the Log4J logging framework. +|`spring-boot-starter-log4j2` +|Support the Log4J 2 logging framework. |`spring-boot-starter-logging` |Import Spring Boot's default logging framework (Logback). diff --git a/spring-boot-parent/pom.xml b/spring-boot-parent/pom.xml index d3e22d88c5..d8e0f41c6d 100755 --- a/spring-boot-parent/pom.xml +++ b/spring-boot-parent/pom.xml @@ -42,6 +42,11 @@ + + log4j + log4j + 1.2.17 + com.google.guava guava diff --git a/spring-boot-samples/README.adoc b/spring-boot-samples/README.adoc index d33ed22cd0..469eedb13e 100644 --- a/spring-boot-samples/README.adoc +++ b/spring-boot-samples/README.adoc @@ -14,8 +14,8 @@ -- A web UI example with production features * link:spring-boot-sample-actuator-noweb[spring-boot-sample-actuator-noweb] -- A production features sample with no web application -* link:spring-boot-sample-actuator-log4j[spring-boot-sample-actuator-log4j] - -- A production features sample using log4j for logging (instead of logback) +* link:spring-boot-sample-actuator-log4j2[spring-boot-sample-actuator-log4j2] + -- A production features sample using log4j 2 for logging (instead of logback) * link:spring-boot-sample-cache[spring-boot-sample-cache] -- A web sample that uses Spring's cache abstraction * link:spring-boot-sample-web-ui[spring-boot-sample-web-ui] diff --git a/spring-boot-samples/pom.xml b/spring-boot-samples/pom.xml index 156182549b..4e7446eb03 100644 --- a/spring-boot-samples/pom.xml +++ b/spring-boot-samples/pom.xml @@ -24,7 +24,6 @@ spring-boot-sample-ant spring-boot-sample-activemq spring-boot-sample-actuator - spring-boot-sample-actuator-log4j spring-boot-sample-actuator-log4j2 spring-boot-sample-actuator-noweb spring-boot-sample-actuator-ui diff --git a/spring-boot-samples/spring-boot-sample-actuator-log4j/pom.xml b/spring-boot-samples/spring-boot-sample-actuator-log4j/pom.xml deleted file mode 100644 index 64a17e3e95..0000000000 --- a/spring-boot-samples/spring-boot-sample-actuator-log4j/pom.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - 4.0.0 - - - org.springframework.boot - spring-boot-samples - 1.4.0.BUILD-SNAPSHOT - - spring-boot-sample-actuator-log4j - Spring Boot Actuator Log4j Sample - Spring Boot Actuator Log4j Sample - http://projects.spring.io/spring-boot/ - - Pivotal Software, Inc. - http://www.spring.io - - - ${basedir}/../.. - - - - org.springframework.boot - spring-boot-starter-actuator - - - org.springframework.boot - spring-boot-starter-logging - - - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.boot - spring-boot-starter-log4j - - - org.springframework.boot - spring-boot-starter-test - test - - - org.springframework.boot - spring-boot-starter-logging - - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - diff --git a/spring-boot-samples/spring-boot-sample-actuator-log4j/src/main/java/sample/actuator/log4j/HelloWorldService.java b/spring-boot-samples/spring-boot-sample-actuator-log4j/src/main/java/sample/actuator/log4j/HelloWorldService.java deleted file mode 100644 index e7ba565979..0000000000 --- a/spring-boot-samples/spring-boot-sample-actuator-log4j/src/main/java/sample/actuator/log4j/HelloWorldService.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2012-2013 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 sample.actuator.log4j; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -@Component -public class HelloWorldService { - - @Autowired - private ServiceProperties configuration; - - public String getHelloMessage() { - return "Hello " + this.configuration.getName(); - } - -} diff --git a/spring-boot-samples/spring-boot-sample-actuator-log4j/src/main/java/sample/actuator/log4j/SampleActuatorLog4JApplication.java b/spring-boot-samples/spring-boot-sample-actuator-log4j/src/main/java/sample/actuator/log4j/SampleActuatorLog4JApplication.java deleted file mode 100644 index 66c1edc98b..0000000000 --- a/spring-boot-samples/spring-boot-sample-actuator-log4j/src/main/java/sample/actuator/log4j/SampleActuatorLog4JApplication.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2012-2013 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 sample.actuator.log4j; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -@SpringBootApplication -public class SampleActuatorLog4JApplication { - - public static void main(String[] args) throws Exception { - SpringApplication.run(SampleActuatorLog4JApplication.class, args); - } - -} diff --git a/spring-boot-samples/spring-boot-sample-actuator-log4j/src/main/java/sample/actuator/log4j/SampleController.java b/spring-boot-samples/spring-boot-sample-actuator-log4j/src/main/java/sample/actuator/log4j/SampleController.java deleted file mode 100644 index 43ea074981..0000000000 --- a/spring-boot-samples/spring-boot-sample-actuator-log4j/src/main/java/sample/actuator/log4j/SampleController.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2012-2013 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 sample.actuator.log4j; - -import java.util.Collections; -import java.util.Map; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -@Controller -public class SampleController { - - @Autowired - private HelloWorldService helloWorldService; - - @RequestMapping("/") - @ResponseBody - public Map helloWorld() { - return Collections.singletonMap("message", - this.helloWorldService.getHelloMessage()); - } - - @RequestMapping("/foo") - @ResponseBody - public String foo() { - throw new IllegalArgumentException("Server error"); - } - -} diff --git a/spring-boot-samples/spring-boot-sample-actuator-log4j/src/main/java/sample/actuator/log4j/ServiceProperties.java b/spring-boot-samples/spring-boot-sample-actuator-log4j/src/main/java/sample/actuator/log4j/ServiceProperties.java deleted file mode 100644 index 65194e1443..0000000000 --- a/spring-boot-samples/spring-boot-sample-actuator-log4j/src/main/java/sample/actuator/log4j/ServiceProperties.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2012-2014 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 sample.actuator.log4j; - -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.stereotype.Component; - -@ConfigurationProperties(prefix = "service", ignoreUnknownFields = false) -@Component -public class ServiceProperties { - - private String name = "World"; - - public String getName() { - return this.name; - } - - public void setName(String name) { - this.name = name; - } - -} diff --git a/spring-boot-samples/spring-boot-sample-actuator-log4j/src/main/resources/application.properties b/spring-boot-samples/spring-boot-sample-actuator-log4j/src/main/resources/application.properties deleted file mode 100644 index 68952c2ab7..0000000000 --- a/spring-boot-samples/spring-boot-sample-actuator-log4j/src/main/resources/application.properties +++ /dev/null @@ -1,17 +0,0 @@ -#logging.file: /tmp/logs/app.log -#server.port: 8080 -#management.port: 8080 -management.address: 127.0.0.1 -endpoints.shutdown.enabled: true -server.tomcat.basedir: target/tomcat -server.tomcat.access_log_pattern: %h %t "%r" %s %b -security.require_ssl: false -service.name: Phil -shell.ssh.enabled: true -shell.ssh.port: 2222 -#shell.telnet.enabled: false -#shell.telnet.port: 1111 -shell.auth: spring -#shell.auth: key -#shell.auth.key.path: ${user.home}/test/id_rsa.pub.pem -#shell.auth: simple diff --git a/spring-boot-samples/spring-boot-sample-actuator-log4j/src/main/resources/log4j.properties b/spring-boot-samples/spring-boot-sample-actuator-log4j/src/main/resources/log4j.properties deleted file mode 100644 index 6070be6142..0000000000 --- a/spring-boot-samples/spring-boot-sample-actuator-log4j/src/main/resources/log4j.properties +++ /dev/null @@ -1,14 +0,0 @@ -log4j.rootCategory=INFO, CONSOLE - -PID=???? -LOG_PATTERN=[%d{yyyy-MM-dd HH:mm:ss.SSS}] log4j%X{context} - ${PID} %5p [%t] --- %c{1}: %m%n - -# CONSOLE is set to be a ConsoleAppender using a PatternLayout. -log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender -log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout -log4j.appender.CONSOLE.layout.ConversionPattern=${LOG_PATTERN} - -log4j.category.org.hibernate.validator.internal.util.Version=WARN -log4j.category.org.apache.coyote.http11.Http11NioProtocol=WARN -log4j.category.org.apache.tomcat.util.net.NioSelectorPool=WARN -log4j.category.org.apache.catalina.startup.DigesterFactory=ERROR diff --git a/spring-boot-samples/spring-boot-sample-actuator-log4j/src/test/java/sample/actuator/log4j/SampleActuatorApplicationTests.java b/spring-boot-samples/spring-boot-sample-actuator-log4j/src/test/java/sample/actuator/log4j/SampleActuatorApplicationTests.java deleted file mode 100644 index c02141e5d4..0000000000 --- a/spring-boot-samples/spring-boot-sample-actuator-log4j/src/test/java/sample/actuator/log4j/SampleActuatorApplicationTests.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright 2012-2014 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 sample.actuator.log4j; - -import java.util.Map; - -import org.junit.Test; -import org.junit.runner.RunWith; - -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.test.SpringApplicationConfiguration; -import org.springframework.boot.test.TestRestTemplate; -import org.springframework.boot.test.WebIntegrationTest; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -/** - * Basic integration tests for service demo application. - * - * @author Dave Syer - */ -@RunWith(SpringJUnit4ClassRunner.class) -@SpringApplicationConfiguration(SampleActuatorLog4JApplication.class) -@WebIntegrationTest(randomPort = true) -@DirtiesContext -public class SampleActuatorApplicationTests { - - @Value("${local.server.port}") - private int port; - - @Test - public void testHome() throws Exception { - @SuppressWarnings("rawtypes") - ResponseEntity entity = new TestRestTemplate() - .getForEntity("http://localhost:" + this.port, Map.class); - assertEquals(HttpStatus.OK, entity.getStatusCode()); - @SuppressWarnings("unchecked") - Map body = entity.getBody(); - assertEquals("Hello Phil", body.get("message")); - } - - @Test - public void testHealth() throws Exception { - @SuppressWarnings("rawtypes") - ResponseEntity entity = new TestRestTemplate() - .getForEntity("http://localhost:" + this.port + "/health", Map.class); - assertEquals(HttpStatus.OK, entity.getStatusCode()); - @SuppressWarnings("unchecked") - Map body = entity.getBody(); - assertNotNull(body.get("diskSpace")); - } - -} diff --git a/spring-boot-samples/spring-boot-sample-traditional/src/main/resources/log4j.properties b/spring-boot-samples/spring-boot-sample-traditional/src/main/resources/log4j.properties deleted file mode 100644 index 17a835faff..0000000000 --- a/spring-boot-samples/spring-boot-sample-traditional/src/main/resources/log4j.properties +++ /dev/null @@ -1,7 +0,0 @@ -log4j.rootCategory=INFO, stdout - -log4j.appender.stdout=org.apache.log4j.ConsoleAppender -log4j.appender.stdout.layout=org.apache.log4j.PatternLayout -log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m>%n - -log4j.category.org.springframework.web=DEBUG diff --git a/spring-boot-starters/pom.xml b/spring-boot-starters/pom.xml index 93413d4d07..c0b9af6f5c 100644 --- a/spring-boot-starters/pom.xml +++ b/spring-boot-starters/pom.xml @@ -46,7 +46,6 @@ spring-boot-starter-jta-atomikos spring-boot-starter-jta-bitronix spring-boot-starter-logging - spring-boot-starter-log4j spring-boot-starter-log4j2 spring-boot-starter-mail spring-boot-starter-mobile diff --git a/spring-boot-starters/spring-boot-starter-log4j/pom.xml b/spring-boot-starters/spring-boot-starter-log4j/pom.xml deleted file mode 100644 index 65e8a1a29a..0000000000 --- a/spring-boot-starters/spring-boot-starter-log4j/pom.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - 4.0.0 - - org.springframework.boot - spring-boot-starters - 1.4.0.BUILD-SNAPSHOT - - spring-boot-starter-log4j - Spring Boot Log4J Starter - Spring Boot Log4J Starter - http://projects.spring.io/spring-boot/ - - Pivotal Software, Inc. - http://www.spring.io - - - ${basedir}/../.. - - - - org.slf4j - jcl-over-slf4j - - - org.slf4j - jul-to-slf4j - - - org.slf4j - slf4j-log4j12 - - - log4j - log4j - - - diff --git a/spring-boot-starters/spring-boot-starter-log4j/src/main/resources/META-INF/spring.provides b/spring-boot-starters/spring-boot-starter-log4j/src/main/resources/META-INF/spring.provides deleted file mode 100644 index 76057bd232..0000000000 --- a/spring-boot-starters/spring-boot-starter-log4j/src/main/resources/META-INF/spring.provides +++ /dev/null @@ -1 +0,0 @@ -provides: log4j,slf4j-log4j12 \ No newline at end of file diff --git a/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-exclude-group/pom.xml b/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-exclude-group/pom.xml index eee4f1c4a3..34abd05130 100644 --- a/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-exclude-group/pom.xml +++ b/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-exclude-group/pom.xml @@ -20,7 +20,7 @@ repackage - log4j + org.apache.logging.log4j @@ -52,9 +52,9 @@ provided - log4j - log4j - 1.2.17 + org.apache.logging.log4j + log4j-api + 2.4.1 diff --git a/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-exclude-group/verify.groovy b/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-exclude-group/verify.groovy index f03bbb3a83..9d326f53cb 100644 --- a/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-exclude-group/verify.groovy +++ b/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-exclude-group/verify.groovy @@ -22,6 +22,6 @@ new Verify.JarArchiveVerification(f, Verify.SAMPLE_APP) { @Override protected void verifyZipEntries(Verify.ArchiveVerifier verifier) throws Exception { super.verifyZipEntries(verifier) - verifier.assertHasNoEntryNameStartingWith("lib/log4j-1.2.17.jar") + verifier.assertHasNoEntryNameStartingWith("lib/log4j-api-2.4.1.jar") } }.verify(); diff --git a/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-test-scope/pom.xml b/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-test-scope/pom.xml index 994945fae5..d3ba2034a6 100644 --- a/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-test-scope/pom.xml +++ b/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-test-scope/pom.xml @@ -52,9 +52,9 @@ provided - log4j - log4j - @log4j.version@ + org.apache.logging.log4j + log4j-api + 2.4.1 test diff --git a/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-test-scope/verify.groovy b/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-test-scope/verify.groovy index b76415b150..1952298b0b 100644 --- a/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-test-scope/verify.groovy +++ b/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-test-scope/verify.groovy @@ -22,6 +22,6 @@ new Verify.JarArchiveVerification(f, Verify.SAMPLE_APP) { @Override protected void verifyZipEntries(Verify.ArchiveVerifier verifier) throws Exception { super.verifyZipEntries(verifier) - verifier.assertHasNoEntryNameStartingWith("lib/log4j-1.2.17.jar") + verifier.assertHasNoEntryNameStartingWith("lib/log4j-api-2.4.1.jar") } }.verify(); diff --git a/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-with-unpack/pom.xml b/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-with-unpack/pom.xml index 3349f7ecd0..015944e662 100644 --- a/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-with-unpack/pom.xml +++ b/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-with-unpack/pom.xml @@ -57,9 +57,9 @@ provided - log4j - log4j - @log4j.version@ + org.apache.logging.log4j + log4j-api + @log4j2.version@ diff --git a/spring-boot-tools/spring-boot-maven-plugin/src/it/run-exclude/pom.xml b/spring-boot-tools/spring-boot-maven-plugin/src/it/run-exclude/pom.xml index 62394bd0e5..80d3cd142c 100644 --- a/spring-boot-tools/spring-boot-maven-plugin/src/it/run-exclude/pom.xml +++ b/spring-boot-tools/spring-boot-maven-plugin/src/it/run-exclude/pom.xml @@ -23,8 +23,8 @@ - log4j - log4j + org.apache.logging.log4j + log4j-api javax.servlet @@ -36,9 +36,9 @@ - log4j - log4j - @log4j.version@ + org.apache.logging.log4j + log4j-api + @log4j2.version@ javax.servlet diff --git a/spring-boot/pom.xml b/spring-boot/pom.xml index 4a31e66a69..0de33cba3b 100644 --- a/spring-boot/pom.xml +++ b/spring-boot/pom.xml @@ -84,11 +84,6 @@ junit true - - log4j - log4j - true - org.apache.logging.log4j log4j-api diff --git a/spring-boot/src/main/java/org/springframework/boot/logging/LoggingSystem.java b/spring-boot/src/main/java/org/springframework/boot/logging/LoggingSystem.java index 8bb9213836..bb63ed1749 100644 --- a/spring-boot/src/main/java/org/springframework/boot/logging/LoggingSystem.java +++ b/spring-boot/src/main/java/org/springframework/boot/logging/LoggingSystem.java @@ -45,8 +45,6 @@ public abstract class LoggingSystem { "org.springframework.boot.logging.logback.LogbackLoggingSystem"); systems.put("org.apache.logging.log4j.core.impl.Log4jContextFactory", "org.springframework.boot.logging.log4j2.Log4J2LoggingSystem"); - systems.put("org.apache.log4j.PropertyConfigurator", - "org.springframework.boot.logging.log4j.Log4JLoggingSystem"); systems.put("java.util.logging.LogManager", "org.springframework.boot.logging.java.JavaLoggingSystem"); SYSTEMS = Collections.unmodifiableMap(systems); @@ -96,8 +94,7 @@ public abstract class LoggingSystem { public abstract void setLogLevel(String loggerName, LogLevel level); /** - * Detect and return the logging system in use. Supports Logback, Log4J, Log4J2 and - * Java Logging. + * Detect and return the logging system in use. Supports Logback and Java Logging. * @param classLoader the classloader * @return The logging system */ diff --git a/spring-boot/src/main/java/org/springframework/boot/logging/log4j/Log4JLoggingSystem.java b/spring-boot/src/main/java/org/springframework/boot/logging/log4j/Log4JLoggingSystem.java deleted file mode 100644 index cb6e954c91..0000000000 --- a/spring-boot/src/main/java/org/springframework/boot/logging/log4j/Log4JLoggingSystem.java +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Copyright 2012-2015 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.log4j; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; -import org.apache.log4j.Logger; - -import org.springframework.boot.logging.LogFile; -import org.springframework.boot.logging.LogLevel; -import org.springframework.boot.logging.LoggingInitializationContext; -import org.springframework.boot.logging.LoggingSystem; -import org.springframework.boot.logging.Slf4JLoggingSystem; -import org.springframework.util.Assert; -import org.springframework.util.Log4jConfigurer; -import org.springframework.util.StringUtils; - -/** - * {@link LoggingSystem} for Log4j. - * - * @author Phillip Webb - * @author Dave Syer - * @author Andy Wilkinson - * @deprecated in Spring Boot 1.3 in favor of Apache Log4j 2 (following Apache's EOL - * declaration for log4j 1.x) - */ -@Deprecated -public class Log4JLoggingSystem extends Slf4JLoggingSystem { - - private static final Map LEVELS; - - static { - Map levels = new HashMap(); - levels.put(LogLevel.TRACE, Level.TRACE); - levels.put(LogLevel.DEBUG, Level.DEBUG); - levels.put(LogLevel.INFO, Level.INFO); - levels.put(LogLevel.WARN, Level.WARN); - levels.put(LogLevel.ERROR, Level.ERROR); - levels.put(LogLevel.FATAL, Level.FATAL); - levels.put(LogLevel.OFF, Level.OFF); - LEVELS = Collections.unmodifiableMap(levels); - } - - public Log4JLoggingSystem(ClassLoader classLoader) { - super(classLoader); - } - - @Override - protected String[] getStandardConfigLocations() { - return new String[] { "log4j.xml", "log4j.properties" }; - } - - @Override - public void beforeInitialize() { - super.beforeInitialize(); - LogManager.getRootLogger().setLevel(Level.FATAL); - } - - @Override - protected void loadDefaults(LoggingInitializationContext initializationContext, - LogFile logFile) { - if (logFile != null) { - loadConfiguration(getPackagedConfigFile("log4j-file.properties"), logFile); - } - else { - loadConfiguration(getPackagedConfigFile("log4j.properties"), logFile); - } - } - - @Override - protected void loadConfiguration(LoggingInitializationContext initializationContext, - String location, LogFile logFile) { - loadConfiguration(location, logFile); - } - - protected void loadConfiguration(String location, LogFile logFile) { - Assert.notNull(location, "Location must not be null"); - if (logFile != null) { - logFile.applyToSystemProperties(); - } - try { - Log4jConfigurer.initLogging(location); - } - catch (Exception ex) { - throw new IllegalStateException( - "Could not initialize Log4J logging from " + location, ex); - } - } - - @Override - protected void reinitialize(LoggingInitializationContext initializationContext) { - loadConfiguration(getSelfInitializationConfig(), null); - } - - @Override - public void setLogLevel(String loggerName, LogLevel level) { - Logger logger = (StringUtils.hasLength(loggerName) - ? LogManager.getLogger(loggerName) : LogManager.getRootLogger()); - logger.setLevel(LEVELS.get(level)); - } - - @Override - public Runnable getShutdownHandler() { - return new ShutdownHandler(); - } - - private static final class ShutdownHandler implements Runnable { - - @Override - public void run() { - LogManager.shutdown(); - } - - } - -} diff --git a/spring-boot/src/main/java/org/springframework/boot/logging/log4j/package-info.java b/spring-boot/src/main/java/org/springframework/boot/logging/log4j/package-info.java deleted file mode 100644 index d5a91c83d5..0000000000 --- a/spring-boot/src/main/java/org/springframework/boot/logging/log4j/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2012-2014 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. - */ - -/** - * Support for the Log4j logging library. - */ -package org.springframework.boot.logging.log4j; diff --git a/spring-boot/src/main/resources/org/springframework/boot/logging/log4j/log4j-file.properties b/spring-boot/src/main/resources/org/springframework/boot/logging/log4j/log4j-file.properties deleted file mode 100644 index 5242f3d128..0000000000 --- a/spring-boot/src/main/resources/org/springframework/boot/logging/log4j/log4j-file.properties +++ /dev/null @@ -1,32 +0,0 @@ -log4j.rootCategory=INFO, CONSOLE, FILE - -PID=???? -LOG_PATH=${java.io.tmpdir} -LOG_FILE=${LOG_PATH}/spring.log -LOG_LEVEL_PATTERN=%5p -LOG_PATTERN=[%d{yyyy-MM-dd HH:mm:ss.SSS}] boot%X{context} - ${PID} ${LOG_LEVEL_PATTERN} [%t] --- %c{1}: %m%n - -# CONSOLE is set to be a ConsoleAppender using a PatternLayout. -log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender -log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout -log4j.appender.CONSOLE.layout.ConversionPattern=${LOG_PATTERN} - -log4j.appender.FILE=org.apache.log4j.RollingFileAppender -log4j.appender.FILE.File=${LOG_FILE} -log4j.appender.FILE.MaxFileSize=10MB -log4j.appender.FILE.layout = org.apache.log4j.PatternLayout -log4j.appender.FILE.layout.ConversionPattern=${LOG_PATTERN} - -log4j.category.org.apache.catalina.startup.DigesterFactory=ERROR -log4j.category.org.apache.catalina.util.LifecycleBase=ERROR -log4j.category.org.apache.coyote.http11.Http11NioProtocol=WARN -log4j.category.org.apache.sshd.common.util.SecurityUtils -log4j.category.org.apache.tomcat.util.net.NioSelectorPool=WARN -log4j.category.org.crsh.plugin=WARN -log4j.category.org.crsh.ssh=WARN -log4j.category.org.eclipse.jetty.util.component.AbstractLifeCycle=ERROR -log4j.category.org.hibernate.validator.internal.util.Version=WARN -log4j.category.org.springframework.boot.actuate.autoconfigure.CrshAutoConfiguration=WARN -log4j.category.org.springframework.boot.actuate.endpoint.jmx=WARN -log4j.category.org.thymeleaf=WARN - diff --git a/spring-boot/src/main/resources/org/springframework/boot/logging/log4j/log4j.properties b/spring-boot/src/main/resources/org/springframework/boot/logging/log4j/log4j.properties deleted file mode 100644 index a8769ee7a9..0000000000 --- a/spring-boot/src/main/resources/org/springframework/boot/logging/log4j/log4j.properties +++ /dev/null @@ -1,23 +0,0 @@ -log4j.rootCategory=INFO, CONSOLE - -PID=???? -LOG_LEVEL_PATTERN=%5p -LOG_PATTERN=[%d{yyyy-MM-dd HH:mm:ss.SSS}] boot%X{context} - ${PID} ${LOG_LEVEL_PATTERN} [%t] --- %c{1}: %m%n - -# CONSOLE is set to be a ConsoleAppender using a PatternLayout. -log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender -log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout -log4j.appender.CONSOLE.layout.ConversionPattern=${LOG_PATTERN} - -log4j.category.org.apache.catalina.startup.DigesterFactory=ERROR -log4j.category.org.apache.catalina.util.LifecycleBase=ERROR -log4j.category.org.apache.coyote.http11.Http11NioProtocol=WARN -log4j.category.org.apache.sshd.common.util.SecurityUtils -log4j.category.org.apache.tomcat.util.net.NioSelectorPool=WARN -log4j.category.org.crsh.plugin=WARN -log4j.category.org.crsh.ssh=WARN -log4j.category.org.eclipse.jetty.util.component.AbstractLifeCycle=ERROR -log4j.category.org.hibernate.validator.internal.util.Version=WARN -log4j.category.org.springframework.boot.actuate.autoconfigure.CrshAutoConfiguration=WARN -log4j.category.org.springframework.boot.actuate.endpoint.jmx=WARN -log4j.category.org.thymeleaf=WARN diff --git a/spring-boot/src/test/java/org/springframework/boot/logging/log4j/Log4JLoggingSystemTests.java b/spring-boot/src/test/java/org/springframework/boot/logging/log4j/Log4JLoggingSystemTests.java deleted file mode 100644 index 3fe02c4612..0000000000 --- a/spring-boot/src/test/java/org/springframework/boot/logging/log4j/Log4JLoggingSystemTests.java +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Copyright 2012-2015 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.log4j; - -import java.io.File; -import java.util.logging.Handler; -import java.util.logging.LogManager; - -import org.apache.commons.logging.impl.Log4JLogger; -import org.junit.After; -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Rule; -import org.junit.Test; -import org.slf4j.bridge.SLF4JBridgeHandler; - -import org.springframework.boot.logging.AbstractLoggingSystemTests; -import org.springframework.boot.logging.LogLevel; -import org.springframework.boot.test.OutputCapture; -import org.springframework.util.StringUtils; - -import static org.hamcrest.Matchers.equalTo; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; - -/** - * Tests for {@link Log4JLoggingSystem}. - * - * @author Phillip Webb - * @author Andy Wilkinson - */ -@SuppressWarnings("deprecation") -public class Log4JLoggingSystemTests extends AbstractLoggingSystemTests { - - @Rule - public OutputCapture output = new OutputCapture(); - - private final Log4JLoggingSystem loggingSystem = new Log4JLoggingSystem( - getClass().getClassLoader()); - - private Log4JLogger logger; - - @Before - public void setup() { - this.logger = new Log4JLogger(getClass().getName()); - } - - @Override - @After - public void clear() { - this.loggingSystem.cleanUp(); - } - - @Test - public void noFile() throws Exception { - this.loggingSystem.beforeInitialize(); - this.logger.info("Hidden"); - this.loggingSystem.initialize(null, null, null); - this.logger.info("Hello world"); - String output = this.output.toString().trim(); - assertTrue("Wrong output:\n" + output, output.contains("Hello world")); - assertFalse("Output not hidden:\n" + output, output.contains("Hidden")); - assertFalse(new File(tmpDir() + "/spring.log").exists()); - } - - @Test - public void withFile() throws Exception { - this.loggingSystem.beforeInitialize(); - this.logger.info("Hidden"); - this.loggingSystem.initialize(null, null, getLogFile(null, tmpDir())); - this.logger.info("Hello world"); - String output = this.output.toString().trim(); - assertTrue("Wrong output:\n" + output, output.contains("Hello world")); - assertFalse("Output not hidden:\n" + output, output.contains("Hidden")); - assertTrue(new File(tmpDir() + "/spring.log").exists()); - } - - @Test - public void testNonDefaultConfigLocation() throws Exception { - this.loggingSystem.beforeInitialize(); - this.loggingSystem.initialize(null, "classpath:log4j-nondefault.properties", - getLogFile(null, tmpDir())); - this.logger.info("Hello world"); - String output = this.output.toString().trim(); - assertTrue("Wrong output:\n" + output, output.contains("Hello world")); - assertTrue("Wrong output:\n" + output, output.contains(tmpDir() + "/spring.log")); - assertFalse(new File(tmpDir() + "/tmp.log").exists()); - } - - @Test(expected = IllegalStateException.class) - public void testNonexistentConfigLocation() throws Exception { - this.loggingSystem.beforeInitialize(); - this.loggingSystem.initialize(null, "classpath:log4j-nonexistent.xml", null); - } - - @Test - public void setLevel() throws Exception { - this.loggingSystem.beforeInitialize(); - this.loggingSystem.initialize(null, null, null); - this.logger.debug("Hello"); - this.loggingSystem.setLogLevel("org.springframework.boot", LogLevel.DEBUG); - this.logger.debug("Hello"); - assertThat(StringUtils.countOccurrencesOf(this.output.toString(), "Hello"), - equalTo(1)); - } - - @Test - @Ignore("Fails on Bamboo") - public void loggingThatUsesJulIsCaptured() { - this.loggingSystem.beforeInitialize(); - this.loggingSystem.initialize(null, null, null); - java.util.logging.Logger julLogger = java.util.logging.Logger - .getLogger(getClass().getName()); - julLogger.severe("Hello world"); - String output = this.output.toString().trim(); - assertTrue("Wrong output:\n" + output, output.contains("Hello world")); - } - - @Test - public void bridgeHandlerLifecycle() { - assertFalse(bridgeHandlerInstalled()); - this.loggingSystem.beforeInitialize(); - assertTrue(bridgeHandlerInstalled()); - this.loggingSystem.cleanUp(); - assertFalse(bridgeHandlerInstalled()); - } - - private boolean bridgeHandlerInstalled() { - java.util.logging.Logger rootLogger = LogManager.getLogManager().getLogger(""); - Handler[] handlers = rootLogger.getHandlers(); - for (Handler handler : handlers) { - if (handler instanceof SLF4JBridgeHandler) { - return true; - } - } - return false; - } - -} diff --git a/spring-boot/src/test/resources/log4j-nondefault.properties b/spring-boot/src/test/resources/log4j-nondefault.properties deleted file mode 100644 index d852ca65d8..0000000000 --- a/spring-boot/src/test/resources/log4j-nondefault.properties +++ /dev/null @@ -1,10 +0,0 @@ -log4j.reset=true -log4j.rootCategory=INFO, CONSOLE - -PID=???? -LOG_PATTERN=${LOG_FILE} %d{yyyy-MM-dd HH:mm:ss.SSS}] service%X{context} - ${PID} %5p [%t] --- %c{1}: %m%n - -# CONSOLE is set to be a ConsoleAppender using a PatternLayout. -log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender -log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout -log4j.appender.CONSOLE.layout.ConversionPattern=${LOG_PATTERN}