Merge pull request #6703 from mprevisic/BAEL-1970
BAEL-1970 Setting the spring log level while testing
This commit is contained in:
commit
53d4e269f3
|
@ -0,0 +1,19 @@
|
|||
package com.baeldung.component;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class OtherComponent {
|
||||
|
||||
private static final Logger LOG = LoggerFactory.getLogger(OtherComponent.class);
|
||||
|
||||
public void processData() {
|
||||
LOG.trace("This is a TRACE log from another package");
|
||||
LOG.debug("This is a DEBUG log from another package");
|
||||
LOG.info("This is an INFO log from another package");
|
||||
LOG.error("This is an ERROR log from another package");
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
package com.baeldung.testloglevel;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
import com.baeldung.boot.Application;
|
||||
|
||||
@SpringBootApplication(scanBasePackages = {"com.baeldung.testloglevel", "com.baeldung.component"})
|
||||
public class TestLogLevelApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(Application.class, args);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
package com.baeldung.testloglevel;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import com.baeldung.component.OtherComponent;
|
||||
|
||||
@RestController
|
||||
public class TestLogLevelController {
|
||||
|
||||
private static final Logger LOG = LoggerFactory.getLogger(TestLogLevelController.class);
|
||||
|
||||
@Autowired
|
||||
private OtherComponent otherComponent;
|
||||
|
||||
@GetMapping("/testLogLevel")
|
||||
public String testLogLevel() {
|
||||
LOG.trace("This is a TRACE log");
|
||||
LOG.debug("This is a DEBUG log");
|
||||
LOG.info("This is an INFO log");
|
||||
LOG.error("This is an ERROR log");
|
||||
|
||||
otherComponent.processData();
|
||||
|
||||
return "Added some log output to console...";
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,70 @@
|
|||
package com.baeldung.testloglevel;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
|
||||
import org.springframework.boot.test.rule.OutputCapture;
|
||||
import org.springframework.boot.test.web.client.TestRestTemplate;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.test.context.ActiveProfiles;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, classes = TestLogLevelApplication.class)
|
||||
@EnableAutoConfiguration(exclude = SecurityAutoConfiguration.class)
|
||||
@ActiveProfiles("logback-test2")
|
||||
public class LogbackMultiProfileTestLogLevelIntegrationTest {
|
||||
|
||||
@Autowired
|
||||
private TestRestTemplate restTemplate;
|
||||
|
||||
@Rule
|
||||
public OutputCapture outputCapture = new OutputCapture();
|
||||
|
||||
private String baseUrl = "/testLogLevel";
|
||||
|
||||
@Test
|
||||
public void givenErrorRootLevelAndTraceLevelForOurPackage_whenCall_thenPrintTraceLogsForOurPackage() {
|
||||
ResponseEntity<String> response = restTemplate.getForEntity(baseUrl, String.class);
|
||||
|
||||
assertThat(response.getStatusCode().value()).isEqualTo(200);
|
||||
assertThatOutputContainsLogForOurPackage("TRACE");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenErrorRootLevelAndTraceLevelForOurPackage_whenCall_thenNoTraceLogsForOtherPackages() {
|
||||
ResponseEntity<String> response = restTemplate.getForEntity(baseUrl, String.class);
|
||||
|
||||
assertThat(response.getStatusCode().value()).isEqualTo(200);
|
||||
assertThatOutputDoesntContainLogForOtherPackages("TRACE");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenErrorRootLevelAndTraceLevelForOurPackage_whenCall_thenPrintErrorLogs() {
|
||||
ResponseEntity<String> response = restTemplate.getForEntity(baseUrl, String.class);
|
||||
|
||||
assertThat(response.getStatusCode().value()).isEqualTo(200);
|
||||
assertThatOutputContainsLogForOurPackage("ERROR");
|
||||
assertThatOutputContainsLogForOtherPackages("ERROR");
|
||||
}
|
||||
|
||||
private void assertThatOutputContainsLogForOurPackage(String level) {
|
||||
assertThat(outputCapture.toString()).containsPattern("TestLogLevelController.*" + level + ".*");
|
||||
}
|
||||
|
||||
private void assertThatOutputDoesntContainLogForOtherPackages(String level) {
|
||||
assertThat(outputCapture.toString().replaceAll("(?m)^.*TestLogLevelController.*$", "")).doesNotContain(level);
|
||||
}
|
||||
|
||||
private void assertThatOutputContainsLogForOtherPackages(String level) {
|
||||
assertThat(outputCapture.toString().replaceAll("(?m)^.*TestLogLevelController.*$", "")).contains(level);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,70 @@
|
|||
package com.baeldung.testloglevel;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
|
||||
import org.springframework.boot.test.rule.OutputCapture;
|
||||
import org.springframework.boot.test.web.client.TestRestTemplate;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.test.context.ActiveProfiles;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, classes = TestLogLevelApplication.class)
|
||||
@EnableAutoConfiguration(exclude = SecurityAutoConfiguration.class)
|
||||
@ActiveProfiles("logback-test")
|
||||
public class LogbackTestLogLevelIntegrationTest {
|
||||
|
||||
@Autowired
|
||||
private TestRestTemplate restTemplate;
|
||||
|
||||
@Rule
|
||||
public OutputCapture outputCapture = new OutputCapture();
|
||||
|
||||
private String baseUrl = "/testLogLevel";
|
||||
|
||||
@Test
|
||||
public void givenErrorRootLevelAndDebugLevelForOurPackage_whenCall_thenPrintDebugLogsForOurPackage() {
|
||||
ResponseEntity<String> response = restTemplate.getForEntity(baseUrl, String.class);
|
||||
|
||||
assertThat(response.getStatusCode().value()).isEqualTo(200);
|
||||
assertThatOutputContainsLogForOurPackage("DEBUG");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenErrorRootLevelAndDebugLevelForOurPackage_whenCall_thenNoDebugLogsForOtherPackages() {
|
||||
ResponseEntity<String> response = restTemplate.getForEntity(baseUrl, String.class);
|
||||
|
||||
assertThat(response.getStatusCode().value()).isEqualTo(200);
|
||||
assertThatOutputDoesntContainLogForOtherPackages("DEBUG");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenErrorRootLevelAndDebugLevelForOurPackage_whenCall_thenPrintErrorLogs() {
|
||||
ResponseEntity<String> response = restTemplate.getForEntity(baseUrl, String.class);
|
||||
|
||||
assertThat(response.getStatusCode().value()).isEqualTo(200);
|
||||
assertThatOutputContainsLogForOurPackage("ERROR");
|
||||
assertThatOutputContainsLogForOtherPackages("ERROR");
|
||||
}
|
||||
|
||||
private void assertThatOutputContainsLogForOurPackage(String level) {
|
||||
assertThat(outputCapture.toString()).containsPattern("TestLogLevelController.*" + level + ".*");
|
||||
}
|
||||
|
||||
private void assertThatOutputDoesntContainLogForOtherPackages(String level) {
|
||||
assertThat(outputCapture.toString().replaceAll("(?m)^.*TestLogLevelController.*$", "")).doesNotContain(level);
|
||||
}
|
||||
|
||||
private void assertThatOutputContainsLogForOtherPackages(String level) {
|
||||
assertThat(outputCapture.toString().replaceAll("(?m)^.*TestLogLevelController.*$", "")).contains(level);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,70 @@
|
|||
package com.baeldung.testloglevel;
|
||||
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
|
||||
import org.springframework.boot.test.rule.OutputCapture;
|
||||
import org.springframework.boot.test.web.client.TestRestTemplate;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.test.context.ActiveProfiles;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, classes = TestLogLevelApplication.class)
|
||||
@EnableAutoConfiguration(exclude = SecurityAutoConfiguration.class)
|
||||
@ActiveProfiles("logging-test")
|
||||
public class TestLogLevelWithProfileIntegrationTest {
|
||||
|
||||
@Autowired
|
||||
private TestRestTemplate restTemplate;
|
||||
|
||||
@Rule
|
||||
public OutputCapture outputCapture = new OutputCapture();
|
||||
|
||||
private String baseUrl = "/testLogLevel";
|
||||
|
||||
@Test
|
||||
public void givenInfoRootLevelAndDebugLevelForOurPackage_whenCall_thenPrintDebugLogsForOurPackage() {
|
||||
ResponseEntity<String> response = restTemplate.getForEntity(baseUrl, String.class);
|
||||
|
||||
assertThat(response.getStatusCode().value()).isEqualTo(200);
|
||||
assertThatOutputContainsLogForOurPackage("DEBUG");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenInfoRootLevelAndDebugLevelForOurPackage_whenCall_thenNoDebugLogsForOtherPackages() {
|
||||
ResponseEntity<String> response = restTemplate.getForEntity(baseUrl, String.class);
|
||||
|
||||
assertThat(response.getStatusCode().value()).isEqualTo(200);
|
||||
assertThatOutputDoesntContainLogForOtherPackages("DEBUG");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenInfoRootLevelAndDebugLevelForOurPackage_whenCall_thenPrintInfoLogs() {
|
||||
ResponseEntity<String> response = restTemplate.getForEntity(baseUrl, String.class);
|
||||
|
||||
assertThat(response.getStatusCode().value()).isEqualTo(200);
|
||||
assertThatOutputContainsLogForOurPackage("INFO");
|
||||
assertThatOutputContainsLogForOtherPackages("INFO");
|
||||
}
|
||||
|
||||
private void assertThatOutputContainsLogForOurPackage(String level) {
|
||||
assertThat(outputCapture.toString()).containsPattern("TestLogLevelController.*" + level + ".*");
|
||||
}
|
||||
|
||||
private void assertThatOutputDoesntContainLogForOtherPackages(String level) {
|
||||
assertThat(outputCapture.toString().replaceAll("(?m)^.*TestLogLevelController.*$", "")).doesNotContain(level);
|
||||
}
|
||||
|
||||
private void assertThatOutputContainsLogForOtherPackages(String level) {
|
||||
assertThat(outputCapture.toString().replaceAll("(?m)^.*TestLogLevelController.*$", "")).contains(level);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
logging.config=classpath:logback-test.xml
|
|
@ -0,0 +1 @@
|
|||
logging.config=classpath:logback-multiprofile.xml
|
|
@ -0,0 +1,2 @@
|
|||
logging.level.com.baeldung.testloglevel=DEBUG
|
||||
logging.level.root=INFO
|
|
@ -0,0 +1,18 @@
|
|||
<configuration>
|
||||
<include resource="/org/springframework/boot/logging/logback/base.xml"/>
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
|
||||
</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
<root level="error">
|
||||
<appender-ref ref="STDOUT"/>
|
||||
</root>
|
||||
<springProfile name="logback-test1">
|
||||
<logger name="com.baeldung.testloglevel" level="info"/>
|
||||
</springProfile>
|
||||
<springProfile name="logback-test2">
|
||||
<logger name="com.baeldung.testloglevel" level="trace"/>
|
||||
</springProfile>
|
||||
</configuration>
|
|
@ -0,0 +1,13 @@
|
|||
<configuration>
|
||||
<include resource="/org/springframework/boot/logging/logback/base.xml"/>
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
|
||||
</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
<root level="error">
|
||||
<appender-ref ref="STDOUT"/>
|
||||
</root>
|
||||
<logger name="com.baeldung.testloglevel" level="debug"/>
|
||||
</configuration>
|
Loading…
Reference in New Issue