189 8069 5689

SpringBoot中怎么设置日志级别

SpringBoot中怎么设置日志级别,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

创新互联建站专注于溧水网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供溧水营销型网站建设,溧水网站制作、溧水网页设计、溧水网站官网定制、重庆小程序开发服务,打造溧水网络公司原创品牌,更为您提供溧水网站排名全网营销落地服务。

1.概览

该教程中,我将向你展示:如何在测试时设置spring boot 日志级别。虽然我们可以在测试通过时忽略日志,但是如果需要诊断失败的测试,选择正确的日志级别是非常重要的。

2.日志级别的重要性

正确设置日志级别可以节省我们许多时间。

举例来说,如果测试在CI服务器上失败,但在开发服务器上时却通过了。我们将无法诊断失败的测试,除非有足够的日志输出。

为了获取正确数量的详细信息,我们可以微调应用程序的日志级别,如果发现某个java包对我们的测试更加重要,可以给它一个更低的日志级别,比如DEBUG。类似地,为了避免日志中有太多干扰,我们可以为那些不太重要的包配置更高级别的日志级别,例如INFO或者ERROR。

一起来探索设置日志级别的各种方法吧!

3. application.properties中的日志设置

如果想要修改测试中的日志级别,我们可以在src/test/resources/application.properties设置属性:

logging.level.com.baeldung.testloglevel=DEBUG

该属性将会为指定的包com.baeldung.testloglevel设置日志级别。

同样地,我们可以通过设置root日志等级,更改所有包的日志级别

logging.level.root=INFO

现在通过添加REST端点写入日志,来尝试下日志设置。

@RestControllerpublic class TestLogLevelController {private static final Logger LOG = LoggerFactory.getLogger(TestLogLevelController.class);@Autowiredprivate 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...";}}

正如所料,如果我们在测试中调用这个端点,我们将可以看到来自TestLogLevelController的调试日志。

2019-04-01 14:08:27.545 DEBUG 56585 --- [nio-8080-exec-1] c.b.testloglevel.TestLogLevelController : This is a DEBUG log2019-04-01 14:08:27.545 INFO 56585 --- [nio-8080-exec-1] c.b.testloglevel.TestLogLevelController : This is an INFO log2019-04-01 14:08:27.546 ERROR 56585 --- [nio-8080-exec-1] c.b.testloglevel.TestLogLevelController : This is an ERROR log2019-04-01 14:08:27.546 INFO 56585 --- [nio-8080-exec-1] c.b.component.OtherComponent : This is an INFO log from another package2019-04-01 14:08:27.546 ERROR 56585 --- [nio-8080-exec-1] c.b.component.OtherComponent : This is an ERROR log from another package

这样设置日志级别十分简单,如果测试用@SpringBootTest注解,那么我们肯定应该这样做。但是,如果不使用该注解,则必须以另一种方式配置日志级别。

3.1 基于Profile的日志设置

尽管将配置放在src\test\application.properties在大多数场景下好用,但在某些情况下,我们可能希望为一个或一组测试设置不同的配置。

在这种情况下,我们可以使用@ActiveProfiles注解向测试添加一个Spring Profile:

@RunWith(SpringRunner.class)@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, classes = TestLogLevelApplication.class)@EnableAutoConfiguration(exclude = SecurityAutoConfiguration.class)@ActiveProfiles("logging-test")public class TestLogLevelWithProfileIntegrationTest {// ...}

日志设置将会存在src/test/resources目录下的application-logging-test.properties中:

logging.level.com.baeldung.testloglevel=TRACElogging.level.root=ERROR

如果使用描述的设置调用TestLogLevelCcontroller,将看到controller中打印的TRACE级别日志,并且不会看到其他包出现INFO级别以上的日志。

2019-04-01 14:08:27.545 DEBUG 56585 --- [nio-8080-exec-1] c.b.testloglevel.TestLogLevelController : This is a DEBUG log2019-04-01 14:08:27.545 INFO 56585 --- [nio-8080-exec-1] c.b.testloglevel.TestLogLevelController : This is an INFO log2019-04-01 14:08:27.546 ERROR 56585 --- [nio-8080-exec-1] c.b.testloglevel.TestLogLevelController : This is an ERROR log2019-04-01 14:08:27.546 ERROR 56585 --- [nio-8080-exec-1] c.b.component.OtherComponent : This is an ERROR log from another package

4.配置Logback

如果使用Spring Boot默认的Logback,可以在src/test/resources目录下的logback-text.xml文件中设置日志级别:

    %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n      

以上例子如何在测试中为Logback配置日志级别。

root日志级别设置为INFO,com.baeldung.testloglevel包的日志级别设置为DEBUG。

再来一次,看看提交以上配置后的日志输出情况

2019-04-01 14:08:27.545 DEBUG 56585 --- [nio-8080-exec-1] c.b.testloglevel.TestLogLevelController : This is a DEBUG log2019-04-01 14:08:27.545 INFO 56585 --- [nio-8080-exec-1] c.b.testloglevel.TestLogLevelController : This is an INFO log2019-04-01 14:08:27.546 ERROR 56585 --- [nio-8080-exec-1] c.b.testloglevel.TestLogLevelController : This is an ERROR log2019-04-01 14:08:27.546 INFO 56585 --- [nio-8080-exec-1] c.b.component.OtherComponent : This is an INFO log from another package2019-04-01 14:08:27.546 ERROR 56585 --- [nio-8080-exec-1] c.b.component.OtherComponent : This is an ERROR log from another package

4.1 基于Profile配置Logback

另一种配置指定Profile文件的方式就是在application.properties文件中设置logging.config属性:

logging.config=classpath:logback-testloglevel.xml

或者,如果想在classpath只有一个的Logback配置,可以在logbacl.xml使用springProfile属性。

    %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n          

现在使用logback-test1配置文件调用TestLogLevelController,将会获得如下输出:

2019-04-01 14:08:27.545 INFO 56585 --- [nio-8080-exec-1] c.b.testloglevel.TestLogLevelController : This is an INFO log2019-04-01 14:08:27.546 ERROR 56585 --- [nio-8080-exec-1] c.b.testloglevel.TestLogLevelController : This is an ERROR log2019-04-01 14:08:27.546 INFO 56585 --- [nio-8080-exec-1] c.b.component.OtherComponent : This is an INFO log from another package2019-04-01 14:08:27.546 ERROR 56585 --- [nio-8080-exec-1] c.b.component.OtherComponent : This is an ERROR log from another package

另一方面,如果更改配置为logback-test2,输出将变成如下:

2019-04-01 14:08:27.545 DEBUG 56585 --- [nio-8080-exec-1] c.b.testloglevel.TestLogLevelController : This is a DEBUG log2019-04-01 14:08:27.545 INFO 56585 --- [nio-8080-exec-1] c.b.testloglevel.TestLogLevelController : This is an INFO log2019-04-01 14:08:27.546 ERROR 56585 --- [nio-8080-exec-1] c.b.testloglevel.TestLogLevelController : This is an ERROR log2019-04-01 14:08:27.546 INFO 56585 --- [nio-8080-exec-1] c.b.component.OtherComponent : This is an INFO log from another package2019-04-01 14:08:27.546 ERROR 56585 --- [nio-8080-exec-1] c.b.component.OtherComponent : This is an ERROR log from another package

5.可选的Log4J

另外,如果我们使用Log4J2,我们可以在src\main\resources目录下的log4j2-spring.xml文件中配置日志等级。

             

我们可以通过application.properties中的logging.config属性来设置Log4J 配置的路径。

logging.config=classpath:log4j-testloglevel.xml

最后,查看使用以上配置后的输出:

2019-04-01 14:08:27.545 DEBUG 56585 --- [nio-8080-exec-1] c.b.testloglevel.TestLogLevelController : This is a DEBUG log2019-04-01 14:08:27.545 INFO 56585 --- [nio-8080-exec-1] c.b.testloglevel.TestLogLevelController : This is an INFO log2019-04-01 14:08:27.546 ERROR 56585 --- [nio-8080-exec-1] c.b.testloglevel.TestLogLevelController : This is an ERROR log2019-04-01 14:08:27.546 INFO 56585 --- [nio-8080-exec-1] c.b.component.OtherComponent : This is an INFO log from another package2019-04-01 14:08:27.546 ERROR 56585 --- [nio-8080-exec-1] c.b.component.OtherComponent : This is an ERROR log from another package

关于SpringBoot中怎么设置日志级别问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。


网站标题:SpringBoot中怎么设置日志级别
文章地址:http://jkwzsj.com/article/gseeci.html

其他资讯